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