最近工作中遇到一个需要打包程序的任务,学习了下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