> 文章列表 > NSIS打包生成Exe

NSIS打包生成Exe

NSIS打包生成Exe

目录

  • 1. 打包脚本基础
  • 2. 定制页面
  • 3. NSIS MUI 的内置向导页面
  • 4. 使用总结
    • 4.1 版本比较
    • 4.2 MessageBox MB_YESNO
    • 4.3 定义全局变量
    • 4.4 添加exe图标
  • 5. 如何在NSIS中安装后创建桌面和开始菜单的快捷方式

1. 打包脚本基础

参见链接:NSIS 打包脚本基础

2. 定制页面

参见链接:定制页面

3. NSIS MUI 的内置向导页面

参见链接:NSIS MUI 的内置向导页面

4. 使用总结

4.1 版本比较

Function VersionCompare!define VersionCompare `!insertmacro VersionCompareCall`!macro VersionCompareCall _VER1 _VER2 _RESULTPush `${_VER1}`Push `${_VER2}`Call VersionComparePop ${_RESULT}!macroendExch $1ExchExch $0ExchPush $2Push $3Push $4Push $5Push $6Push $7begin:StrCpy $2 -1IntOp $2 $2 + 1StrCpy $3 $0 1 $2StrCmp $3 '' +2StrCmp $3 '.' 0 -3StrCpy $4 $0 $2IntOp $2 $2 + 1StrCpy $0 $0 '' $2StrCpy $2 -1IntOp $2 $2 + 1StrCpy $3 $1 1 $2StrCmp $3 '' +2StrCmp $3 '.' 0 -3StrCpy $5 $1 $2IntOp $2 $2 + 1StrCpy $1 $1 '' $2StrCmp $4$5 '' equalStrCpy $6 -1IntOp $6 $6 + 1StrCpy $3 $4 1 $6StrCmp $3 '0' -2StrCmp $3 '' 0 +2StrCpy $4 0StrCpy $7 -1IntOp $7 $7 + 1StrCpy $3 $5 1 $7StrCmp $3 '0' -2StrCmp $3 '' 0 +2StrCpy $5 0StrCmp $4 0 0 +2StrCmp $5 0 begin newer2StrCmp $5 0 newer1IntCmp $6 $7 0 newer1 newer2StrCpy $4 '1$4'StrCpy $5 '1$5'IntCmp $4 $5 begin newer2 newer1equal:StrCpy $0 0goto endnewer1:StrCpy $0 1goto endnewer2:StrCpy $0 2end:Pop $7Pop $6Pop $5Pop $4Pop $3Pop $2Pop $1Exch $0
FunctionEnd

4.2 MessageBox MB_YESNO

	MessageBox MB_YESNO "旧版本$1已安装,是否迁移旧版本数据库?" IDYES true IDNO falsetrue:DetailPrint "it's true!"StrCpy  $IsUpdateDB "true"Goto nextfalse:DetailPrint "it's false"StrCpy  $IsUpdateDB "false"Goto nextnext:${IF} $IsUpdateDB == "true"ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""Rename "$0\\db\\TyOS_Server.db" "$0\\db\\TyOS_Server_old.db"${EndIf}

=MessageBox MB_YESNO 中的true和false分支必须有Goto,否则即使选择了IDYES ,true和false分支也都会执行,导致结果不正确=

4.3 定义全局变量

var  /GLOBAL IsUpdateDB
var  /GLOBAL ProductVersion

4.4 添加exe图标

  CreateShortCut "$DESKTOP\\${EXE_NAME}.lnk" "$INSTDIR\\${EXE_NAME}" ""$INSTDIR\\ICON\\icon.ico""

CreateShortCut 快捷方式 对应的执行文件 icon

=注意icon目录外必须多一层"",好像由于参数是数组的缘故=

5. 如何在NSIS中安装后创建桌面和开始菜单的快捷方式

  ;开始菜单CreateDirectory "$SMPROGRAMS\\${PRODUCT_NAME}"CreateShortCut "$SMPROGRAMS\\${PRODUCT_NAME}\\Website.lnk" "$INSTDIR\\${PRODUCT_NAME}.url"CreateShortCut "$SMPROGRAMS\\${PRODUCT_NAME}\\Uninstall.lnk" "$INSTDIR\\uninst.exe"CreateShortCut "$SMPROGRAMS\\${PRODUCT_NAME}\\${EXE_NAME}.lnk" "$INSTDIR\\${EXE_NAME}" ""$INSTDIR\\ICON\\icon.ico"";桌面快捷方式CreateShortCut "$DESKTOP\\${EXE_NAME}.lnk" "$INSTDIR\\${EXE_NAME}" ""$INSTDIR\\ICON\\icon.ico""