使用NSIS制作Windows安装程序快速入门

使用NSIS制作Windows安装程序快速入门

这里使用的NSIS版本为3.04,HM NIS Edit版本为2.0.3。

制作安装程序的过程:

  1. 确定安装的功能和界面元素
  2. 编写 NSIS 脚本
  3. 使用 NSIS 提供的 makensis 或者 makensisw 程序,将步骤 2 编写的脚本编译成可执行的安装程序(点击HM NIS Edit编译按钮)

配置使用 NSIS 的环境

  1. 安装 NSIS
  2. 安装脚本编辑工具 HM NIS Edit
  3. 也可以使用VS Code安装NSIS脚本插件

使用HM NIS Edit向导生成脚本

  • 使用向导创建脚本

    打开HM NIS Edit,点击菜单“文件”->“新建脚本:向导”,根据向导提示一步步输入信息,最后生成 NSIS 脚本文文件,扩展名为.nsi。

  • 编译脚本

    在HM NIS Edit点击上点击“编译脚本”或者在脚本上右键,在右键菜单中选择"Compile NSIS Script",编译脚本后生成安装程序。名称根据脚本设置,一般为Setup.exe。

学习使用脚本

以下是一个脚本demo,脚本的执行逻辑中我使用了一个对话框弹出可以很清楚的看到脚本的执行过程。实际使用时把MessageBox替换成实际的指令即可。

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
;应用程序属性
!define PRODUCT_NAME "MyProduct" ;应用程序名称
!define PRODUCT_VERSION "1.0"    ;应用程序版本
!define PRODUCT_PUBLISHER "My company, Inc." ;发布者
!define PRODUCT_WEB_SITE "http://www.mycompany.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\MyProduct.exe"

; MUI 1.67 compatible ------
!include "MUI.nsh" ;引入现代风格的图形界面

; MUI Settings ; 定义安装程序图标
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

; 内置页面,每个内置页面都可以设置三个加载过程中的执行函数(以许可证页面为例)
; Welcome page 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; License page 许可证页面
!define MUI_PAGE_CUSTOMFUNCTION_PRE LicensePre ; 页面加载前执行的函数
!define MUI_PAGE_CUSTOMFUNCTION_SHOW LicenseShow ; 页面加载后执行的函数
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE LicenseLeave ; 页面关闭时执行的函数
!insertmacro MUI_PAGE_LICENSE ".\License.txt"
; Directory page 安装路径选择页面
!insertmacro MUI_PAGE_DIRECTORY
; MUI_PAGE_COMPONENTS 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page 文件安装页面
!insertmacro MUI_PAGE_INSTFILES
; 结束
!insertmacro MUI_PAGE_FINISH

;--------------------------------
;Languages 安装程序的语言
!insertmacro MUI_LANGUAGE "English"
;--------------------------------

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "MyProductSetup.exe" ;安装程序名称
InstallDir "$PROGRAMFILES\MyProduct" ;安装路径
ShowInstDetails show

;组件1执行的安装逻辑
Section "Section1" SEC01
  AddSize 500 ; 此组件需要的空间
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Sec01" IDYES
  ;SetOutPath "$INSTDIR"
  ;SetOverwrite ifnewer
  ;File "publish\MyProduct.exe" ; 拷贝应用程序到安装目录
SectionEnd

;组件2执行的安装逻辑
Section "Section2" SEC02
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Sec02" IDYES
SectionEnd

Function LicensePre
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Pre" IDYES
FunctionEnd

Function LicenseShow
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Show" IDYES
FunctionEnd

Function LicenseLeave
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Leave" IDYES
FunctionEnd

; 安装程序执行过程中的回调函数,更多请查看手册
Function .onInit
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Init" IDYES
FunctionEnd

Function .onInstSuccess
  MessageBox MB_YESNO|MB_DEFBUTTON2 "Success" IDYES
FunctionEnd

; 卸载逻辑的回调函数
Function un.onInit
  ;MessageBox MB_YESNO|MB_DEFBUTTON2 "un.Init" IDYES
FunctionEnd
posted @ 2019-12-10 16:28  MM4650  阅读(751)  评论(0编辑  收藏  举报