最近工作中遇到一个需要打包程序的任务,学习了下NSIS和XML插件的使用,解决了工作中遇到的需要多组件可选安装和配置XML文件的问题。
基本的知识就不介绍了,可以去看NSIS的文档,我就把写的代码来出来分享下,供大家参考下。
;安装可选,卸载全部
; 导入插件
!include MUI.nsh
!include nsDialogs.nsh
!include LogicLib.nsh
!include xml.nsh
; 安装程序初始定义常量
!define PRODUCT_NAME "通用模块"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "科技有限公司"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
XPStyle on
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\arrow2-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\arrow2-uninstall.ico"
BrandingText "科技有限公司"
;定义变量
Var Dialog
Var Label
Var ip
Var port
Var sid
Var isConfig
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!insertmacro MUI_PAGE_LICENSE "安装说明.txt"
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
;调用数据库基本配置页面
Page custom ConfigDBPage
;调用数据导入配置页面
;Page custom impPage
;调用数据库导入程序
;Page custom executeImp
Page instfiles
; 安装完成页面
!insertmacro MUI_PAGE_FINISH
; 卸载欢迎页面
!insertmacro MUI_UNPAGE_WELCOME
; 卸载组件选择页面
;!insertmacro MUI_UNPAGE_COMPONENTS
; 卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 卸载完成页面
!insertmacro MUI_UNPAGE_FINISH
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAM