NSIS常见问题
- 给快捷方式添加启动参数 - 1 - CreateShortCut "$DESKTOP\Xxx.lnk" "$INSTDIR\Application\chrome.exe" "https://l2m2.top" - CreateShortCut的具体用法: - 1 - CreateShortCut link.lnk target.file [parameters [icon.file [icon_index_number [start_options [keyboard_shortcut [description]]]]]] 
- 取消完成页的启动程序 - 注释掉 - !define MUI_FINISHPAGE_RUN所在行- 1 - ;!define MUI_FINISHPAGE_RUN "$INSTDIR\Application\chrome.exe" 
- 取消License页面 - 注释掉 - !insertmacro MUI_PAGE_LICENSE所在行- 1 - ;!insertmacro MUI_PAGE_LICENSE "..\..\..\path\to\licence\YourSoftwareLicence.txt" 
- 执行某个批处理文件直到它退出 - 1 - ExecWait '"$INSTDIR\somebat.bat"' - ExecWait的具体用法: - 1 - ExecWait command [user_var(exit code)] 
- 判断安装路径中是否有中文 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22- !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "VerifyInstDir" 
 !insertmacro MUI_PAGE_DIRECTORY
 Function VerifyInstDir
 StrCpy $0 $INSTDIR
 StrLen $1 $0
 StrCpy $2 ''
 ; 每个中文会给strlen增加2,所以copy 1个字符时,会遇到不可显示字符,会被NSIS自动改成?
 ; 正好?本身是非法路径,所以可以用这个来判断路径是否非法
 ${Do}
 IntOp $1 $1 - 1
 ${IfThen} $1 < 0 ${|}${ExitDo}${|}
 StrCpy $2 $0 1 $1
 ${IfThen} $2 == '?' ${|}${ExitDo}${|}
 ${Loop}
 
 ${If} $2 == '?'
 MessageBox MB_ICONEXCLAMATION|MB_OK|MB_TOPMOST "安装路径不能含有中文等宽字节字符。"
 Abort
 ${EndIf}
 FunctionEnd