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 "Software\Microsoft\Windows\CurrentVersion\App Paths\testapp.exe" ; 添加注册表 ;!define PRODUCT_REGKEY "Software\testapp" ; 创建程序主键 ;!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" ;这里定义的变量,最后会显示在控制面板的添加/删除程序的列表里。 ;!define PRODUCT_UNINST_ROOT_KEY "HKLM" ; 卸载目录 ; MUI 1.67 compatible ------ ;!include "MUI.nsh" ; 引用界面函数库 ; MUI Settings ;!define MUI_ABORTWARNING ;未安装完成是用户提示 ;!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" // 定义安装图标 ;!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" // 卸载图标 ;!define MUI_HEADERIMAGE // 标题图标 ;!define MUI_HEADERINAGE_RIGHT // 标题图标所放的位置,_right表示右 ;!define MUI_HEADERIMAGE_BITMAP "标题图片" // 添加标题图片 ;!define MUI_WELCOMEPAGE_TITLE "欢迎使用“产品”安装向导" // 添加界面导向标题 ;!define MUI_WELCOMEPAGE_TEXT "\r\n这个安装向导将指引你完成“产品”的安装进程。\r\n\r\n开始安装前,建议先关闭其他所有应用程序。\r\n\r\n$_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 "$PROGRAMFILES\ReadPassTrain" // 安装程序目录,默认是C:\Programfiles\ ; ;InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"; 对应 InstallDirRegKey HKLM "安装目录注册表" “注册表名” ;Icon "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" // 对应本例子中的 Icon MUI_ICON ; // 显示安装信息 ;ShowInstDetails show ;DirText "安装程序将安装 $(^Name) 在下列文件夹。$\r$\n$\r$\n要安装在不同文件夹,单击 [浏览] 并选择其他文件夹。" ;初始化函数oninit(弹出语言选择框),卸载un. ;Function .onInit ; !insertmacro MUI_LANGDLL_DISPLAY ;FunctionEnd ; 主程序 Section "MainSection" SEC01 ;SetDetailsPrint textonly #InstFiles界面进度条上面显示的文字 ;DetailPrint "正在安装必须的程序组件..." ;SetDetailsPrint none SetOutPath "$INSTDIR\Audio" ; // 存放的文件夹 SetOverwrite ifnewer ; // 文件覆盖属性,on/off表示打开或者关闭,ifnewer存在新版本强制覆盖;try可以覆盖就覆盖,不可以覆盖就不覆盖;ifdiff有变动就覆盖(更新或更旧) File "C:\Users\NAMEJR\Desktop\打包\文件内容\ReadPTCode\Web\Audio\failure.mp3" ; /打包的文件路径 SetOutPath "$INSTDIR\CSS" ; // 多个文件一起打包可重复循环 File "C:\Users\NAMEJR\Desktop\打包\文件内容\ReadPTCode\Web\CSS\Common.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 "Software\Microsoft\Windows\CurrentVersion\App Paths\WindowsFormsApp1.exe" # 添加注册表 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${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}\Contrib\Graphics\Icons\modern-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 "$INSTDIR\WindowsFormsApp1.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 "$PROGRAMFILES\TestPullBag" # 安装程序目录名称 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" # 安装目录注册表 ShowInstDetails show # 显示安装详情 ShowUnInstDetails show # 显示卸载详情 # 开始函数 ;Function .onInit ; !insertmacro MUI_LANGDLL_DISPLAY # 语言选择(目前没发现用处) ;FunctionEnd Section "MainSection" SEC01 SetOutPath "$INSTDIR\Sources\Images" SetOverwrite try File "FirstPush\Sources\Images\横屏.png" SetOutPath "$INSTDIR\Sources\Music" File "FirstPush\Sources\Music\旧梦一场.wav" SetOutPath "$INSTDIR" File "FirstPush\WindowsFormsApp1.exe" File "FirstPush\WindowsFormsApp1.exe.config" File "FirstPush\WindowsFormsApp1.pdb" ; Shortcuts(创建快捷菜单) !insertmacro MUI_STARTMENU_WRITE_BEGIN Application # 开始 CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" # 创建 CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\TestPullBag.lnk" "$INSTDIR\WindowsFormsApp1.exe" # 开始菜单快捷方式 CreateShortCut "$DESKTOP\TestPullBag.lnk" "$INSTDIR\WindowsFormsApp1.exe" # 桌面快捷方式 !insertmacro MUI_STARTMENU_WRITE_END # 结束 SectionEnd Section -AdditionalIcons !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" # 创建卸载快捷方式 !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" # 创建(写入)卸载程序 # 将数据写入到卸载程序里面 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\WindowsFormsApp1.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\WindowsFormsApp1.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 "$INSTDIR\uninst.exe" Delete "$INSTDIR\WindowsFormsApp1.pdb" Delete "$INSTDIR\WindowsFormsApp1.exe.config" Delete "$INSTDIR\WindowsFormsApp1.exe" Delete "$INSTDIR\Sources\Music\旧梦一场.wav" Delete "$INSTDIR\Sources\Images\横屏.png" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" Delete "$DESKTOP\TestPullBag.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\TestPullBag.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir "$INSTDIR\Sources\Music" RMDir "$INSTDIR\Sources\Images" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true # 是否自动关闭,false开启手动关闭 SectionEnd
分类:
打包/发布
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现