NSIS 打包操作

1.文档(案例)笔记:

AddBy 2020-09-11

具体学习可参考下列网址:

可参考网址:http://blog.sina.com.cn/s/blog_6cd65f450101cr0p.html

可参考网址:https://www.cnblogs.com/carlxb/p/12746523.html

可参考网址:https://www.cnblogs.com/zzllily/articles/5445934.html

; Script generated by the HM NIS Edit Script Wizard.
; 可参考网址:http://blog.sina.com.cn/s/blog_6cd65f450101cr0p.html
;可参考网址:https://www.cnblogs.com/carlxb/p/12746523.html
;可参考网址:https://www.cnblogs.com/zzllily/articles/5445934.html

; 使用defined定义常量
;!define PRODUCT_NAME "ReadPassTrain" ;产品名称
;!define PRODUCT_VERSION "1.0"  ; 产品版本号
;!define PRODUCT_PUBLISHER "namejr"  ;  产品发布者
;!define PRODUCT_WEB_SITE ""  ; 网址
;!define PRODUCT_DIR_REGKEY "SoftwareMicrosoftWindowsCurrentVersionApp Paths	estapp.exe"  ; 添加注册表
;!define PRODUCT_REGKEY "Software	estapp"  ; 创建程序主键
;!define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstall${PRODUCT_NAME}"  ;这里定义的变量,最后会显示在控制面板的添加/删除程序的列表里。
;!define PRODUCT_UNINST_ROOT_KEY "HKLM"  ; 卸载目录



; MUI 1.67 compatible ------
;!include "MUI.nsh"  ; 引用界面函数库

; MUI Settings
;!define MUI_ABORTWARNING  ;未安装完成是用户提示
;!define MUI_ICON "${NSISDIR}ContribGraphicsIconsmodern-install.ico"  // 定义安装图标
;!define MUI_UNICON "${NSISDIR}ContribGraphicsIconsmodern-install.ico"  // 卸载图标
;!define MUI_HEADERIMAGE  // 标题图标
;!define MUI_HEADERINAGE_RIGHT  // 标题图标所放的位置,_right表示右
;!define MUI_HEADERIMAGE_BITMAP "标题图片"  // 添加标题图片
;!define MUI_WELCOMEPAGE_TITLE "欢迎使用“产品”安装向导"  // 添加界面导向标题
;!define MUI_WELCOMEPAGE_TEXT "
这个安装向导将指引你完成“产品”的安装进程。

开始安装前,建议先关闭其他所有应用程序。

$_CLICK"  // 添加界面导向文字


; 语言选择框
;!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
;!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
;!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
; Welcome page
;!insertmacro MUI_PAGE_WELCOME  // 显示导向界面欢迎信息
; Instfiles page(下一步)
;!define MUI_LICENSEPAGE_TEXT_TOP "阅读协议的其余部分,请按<PgDn>往下滚动页面。"
;!define MUI_LICENSEPAGE_TEXT_BOTTOM "如果同意协议中的条款,请选择“接受协议中的条款”并$_CLICK"
;!define MUI_LICENSEPAGE_RADIOBUTTONS #协议条款接受选择,也有别的协议接受方式,看个人爱好。
;!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "接受协议中的条款"
;!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "不接受协议中的条款"
;!insertmacro MUI_PAGE_LICENSE "License.txt" //你的协议文件


;程序组件界面,用来选择要安装的程序组件
;!insertmacro MUI_PAGE_COMPONENTS
;程序的安装目录
;!insertmacro MUI_PAGE_DIRECTORY
;程序安装进程显示
;!insertmacro MUI_PAGE_INSTFILES
;  装完成界面
;!insertmacro MUI_PAGE_FINISH
;卸载欢迎界面
;!insertmacro MUI_UNPAGE_WELCOME
;卸载确认界面
;!insertmacro MUI_UNPAGE_CONFIRM
;  // 卸载进程显示
;!insertmacro MUI_UNPAGE_INSTFILES
; 卸载完成界面
;!insertmacro MUI_PAGE_FINISH
; 界面语言选择
;!insertmacro MUI_LANGUAGE "English"  // 英文
;!insertmacro MUI_LANGUAGE "SimpChinese"  // 中文简体
; MUI end ------


;Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"  ;  //标题栏显示的文字
;OutFile "Setup.exe"  // 输出的文件名称和类型
;InstallDir "$PROGRAMFILESReadPassTrain"  // 安装程序目录,默认是C:Programfiles
;
;InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString";  对应 InstallDirRegKey HKLM "安装目录注册表" “注册表名”
;Icon "${NSISDIR}ContribGraphicsIconsmodern-install.ico"  // 对应本例子中的 Icon MUI_ICON
;  // 显示安装信息
;ShowInstDetails show
;DirText "安装程序将安装 $(^Name) 在下列文件夹。$
$
$
$
要安装在不同文件夹,单击 [浏览] 并选择其他文件夹。"

;初始化函数oninit(弹出语言选择框),卸载un.
;Function .onInit
;  !insertmacro MUI_LANGDLL_DISPLAY
;FunctionEnd

; 主程序
Section "MainSection" SEC01
  ;SetDetailsPrint textonly #InstFiles界面进度条上面显示的文字
  ;DetailPrint "正在安装必须的程序组件..."
  ;SetDetailsPrint none

  SetOutPath "$INSTDIRAudio"  ;  // 存放的文件夹
  SetOverwrite ifnewer  ; // 文件覆盖属性,on/off表示打开或者关闭,ifnewer存在新版本强制覆盖;try可以覆盖就覆盖,不可以覆盖就不覆盖;ifdiff有变动就覆盖(更新或更旧)
  File "C:UsersNAMEJRDesktop打包文件内容ReadPTCodeWebAudiofailure.mp3"  ; /打包的文件路径
  SetOutPath "$INSTDIRCSS"  ; // 多个文件一起打包可重复循环
  File "C:UsersNAMEJRDesktop打包文件内容ReadPTCodeWebCSSCommon.css"  ;  可写成 File "新文件路径+新名称文件" "文件路径的文件"
SectionEnd

Section -Post
SectionEnd

EndBy 2020-09-11

2.操作实例:

; Script generated by the HM NIS Edit Script Wizard.

# 常量定义
!define PRODUCT_NAME "TestPullBag"  # 产品名称
!define PRODUCT_VERSION "1.0"  # 版本
!define PRODUCT_PUBLISHER "namejr"  # 发布者
!define PRODUCT_DIR_REGKEY "SoftwareMicrosoftWindowsCurrentVersionApp PathsWindowsFormsApp1.exe"  # 添加注册表
!define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstall${PRODUCT_NAME}"  # 定义删除主键列表
!define PRODUCT_UNINST_ROOT_KEY "HKLM"  # 定义卸载目录
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"  # 定义开始菜单安装目录

# 引用函数库
!include "MUI.nsh"

# 启动程序
!define MUI_ABORTWARNING  # 安装提示(中途退出会弹出提示框)
!define MUI_ICON "favicon.ico"  # 安装图标
;!define MUI_UNICON "${NSISDIR}ContribGraphicsIconsmodern-uninstall.ico"  # 卸载(更改)图标

# 语言常量定义(目前没发现有什么用处,所以也没用过)
;!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
;!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
;!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

; Welcome page
!insertmacro MUI_PAGE_WELCOME  # 启动欢迎界面(第一个页面)
; License page
!insertmacro MUI_PAGE_LICENSE "License.txt"  # 自己定义的协议文本(第二个界面)
; Directory page
!insertmacro MUI_PAGE_DIRECTORY  # 选择安装目录界面(第三个界面)
; 第四个界面(开始菜单设置)定义常量
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE  # 显示是否创建快捷方式选择框(不显示的话默认是创建的,即不显示是否创建快捷方式选择框)
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "TestPullBag"  # 开始菜单名称设置
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"  # 注册表
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"  # 设置注册表键
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"  # 设置注册表值
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP  # 打开第四个界面
; 安装进度界面
!insertmacro MUI_PAGE_INSTFILES  # 显示安装向导界面(安装进度条显示,第五个界面)
; 完成界面
!define MUI_FINISHPAGE_RUN "$INSTDIRWindowsFormsApp1.exe"  # 显示是否运行程序
!insertmacro MUI_PAGE_FINISH  # 打开完成界面(第五个界面)

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES  # 卸载进程显示

; 安装过程语言设置
;!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"


Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"  # 标题栏显示的程序信息
OutFile "Setup.exe"  # 安装包名称
InstallDir "$PROGRAMFILESTestPullBag"  # 安装程序目录名称
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""  # 安装目录注册表
ShowInstDetails show  # 显示安装详情
ShowUnInstDetails show  # 显示卸载详情

# 开始函数
;Function .onInit
;  !insertmacro MUI_LANGDLL_DISPLAY  # 语言选择(目前没发现用处)
;FunctionEnd

Section "MainSection" SEC01
  SetOutPath "$INSTDIRSourcesImages"
  SetOverwrite try
  File "FirstPushSourcesImages横屏.png"
  SetOutPath "$INSTDIRSourcesMusic"
  File "FirstPushSourcesMusic旧梦一场.wav"
  SetOutPath "$INSTDIR"
  File "FirstPushWindowsFormsApp1.exe"
  File "FirstPushWindowsFormsApp1.exe.config"
  File "FirstPushWindowsFormsApp1.pdb"

; Shortcuts(创建快捷菜单)
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application  # 开始
  CreateDirectory "$SMPROGRAMS$ICONS_GROUP"  # 创建
  CreateShortCut "$SMPROGRAMS$ICONS_GROUPTestPullBag.lnk" "$INSTDIRWindowsFormsApp1.exe"  # 开始菜单快捷方式
  CreateShortCut "$DESKTOPTestPullBag.lnk" "$INSTDIRWindowsFormsApp1.exe"  # 桌面快捷方式
  !insertmacro MUI_STARTMENU_WRITE_END  # 结束
SectionEnd

Section -AdditionalIcons
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  CreateShortCut "$SMPROGRAMS$ICONS_GROUPUninstall.lnk" "$INSTDIRuninst.exe"  # 创建卸载快捷方式
  !insertmacro MUI_STARTMENU_WRITE_END
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIRuninst.exe"  # 创建(写入)卸载程序
  # 将数据写入到卸载程序里面
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIRWindowsFormsApp1.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIRuninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIRWindowsFormsApp1.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd

# 卸载成功提示
Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd

# 卸载提示
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
  Abort
FunctionEnd

# 卸载删除信息
Section Uninstall
  !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
  Delete "$INSTDIRuninst.exe"
  Delete "$INSTDIRWindowsFormsApp1.pdb"
  Delete "$INSTDIRWindowsFormsApp1.exe.config"
  Delete "$INSTDIRWindowsFormsApp1.exe"
  Delete "$INSTDIRSourcesMusic旧梦一场.wav"
  Delete "$INSTDIRSourcesImages横屏.png"

  Delete "$SMPROGRAMS$ICONS_GROUPUninstall.lnk"
  Delete "$DESKTOPTestPullBag.lnk"
  Delete "$SMPROGRAMS$ICONS_GROUPTestPullBag.lnk"

  RMDir "$SMPROGRAMS$ICONS_GROUP"
  RMDir "$INSTDIRSourcesMusic"
  RMDir "$INSTDIRSourcesImages"
  RMDir "$INSTDIR"

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true  # 是否自动关闭,false开启手动关闭
SectionEnd
原文地址:https://www.cnblogs.com/namejr/p/13663688.html