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