问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

NISEdit 制作安装包

创作时间:
作者:
@小白创作中心

NISEdit 制作安装包

引用
CSDN
1.
https://blog.csdn.net/cliffordl/article/details/138132949

本文将详细介绍如何使用NISEdit制作安装包。从环境依赖、使用NISEdit制作安装包的具体流程、脚本说明、快捷方式添加ico的方法以及故障解决等多个方面进行讲解,适合有一定技术基础的读者学习和参考。

1. 环境依赖

1.1. NSIS 编译器

使用 NIS Edit 向导模式新建脚本时,需要依赖改编译器。NIS Edit 会自动加载该编译器。

下载地址:https://nsis.sourceforge.io/Download

下载并安装 NSIS 编译器。

1.2. NIS Edit 下载

下载地址1:https://sourceforge.net/projects/hmne/

下载地址2:https://hmne.sourceforge.net/

下载 exe 安装使用。

2. 使用 NIS Edit 制作安装包

参考:https://blog.csdn.net/weixin_46847476/article/details/105537269

2.1. 打开安装向导

cmd 搜索 edit。或者使用桌面快捷方式。

选择【文件】–>【新建脚本:向导】

进入到 NIS Edit 脚本向导,共9步

2.2. 应用程序信息 2/9

必填的是程序名称和版本,其他可以不填。

2.3. 安装程序选项 3/9

Error:安装程序语言栏为空,参考:5.故障排查

2.4. 应用程序的目录和授权信息 4/9

第一行应用程序默认目录:决定了程序文件装在哪里,默认地址 $PROGRAMFILES你的程序名文件夹,不存在时将被创建。

这里的 $PROGRAMFILES 每台电脑都不一样,但是都是系统识别的位置, $是一个转义符, $PROGRAMFILES 代表程序安装目录。

常用的地址代号:

  
$PROFRAMFILES 	# 代表系统安装目录,在此目录下安装的程序能够被360软件管家、Windows“卸载或更改程序”等检测到存在
$SMPROGRAMS 	# 代表开始菜单目录,一般放置软件快捷方式,Win10不能在开始菜单放置卸载和帮助文档的快捷方式,这是Win10的规定,如果设置了是会被自动删除的
$INSTDIR 		# 代表这一步中设定的“应用程序默认目录”,也就是安装目录,如果用户更改安装目录,它将指向用户指定的目录(可以设置不允许用户改变安装目录)
  

第二行授权文件可以放置许可证协议,可以设置三种同意的方式的一种。如果你不需要协议,可以通过删代码来实现,请参照后面的内容。

注意:中文的协议会乱码,最好使用英文协议或者改变编码形式。

如下:安装的时候,显示许可证协议内容。

2.5. 应用程序文件 5/9

如果有应用程序文件,例如:AppMainExe.exe,需要选择覆盖模式。首次使用建议删除,由 NIS Edit 创建 Setup.exe。

如果应用程序有依赖的库文件,需要加上。

2.6. 应用程序图标 6/9

2.7. 安装程序之后运行 7/9

实际上它会给用户一个勾选框,征求用户的意见。

如果你的程序是带参数运行的,那么,可以加入参数(就是在 cmd 运行时的给定的参数),自述文件就是 ReadMe.txt 之类的文件,如果你在程序目录下写了自述文件,会打开它,同样也会征求用户意见。

2.8. 解除安装 8/9

解除安装的方式有两种,如果你的 NSIS 没有日志记录功能,下面会提示你不能使用安全方式,一般来说不移动安装目录的情况下选择简易模式就够了,安全模式会多出一些复杂的代码。

2.9. 保存并编译脚本

选中【保存脚本】,点击完成。

输入脚本名称,保存。

2.10. 编译生成

点击【NSIS(N)】-> 【编译脚本©】。生成可执行程序。

编译成功后,生成 Setup.exe 文件。

选中 Setup.exe 一路确认,即可安装使用。

3. NIS Edit 脚本说明

  
; 该脚本使用 HM NIS Edit 脚本编辑器向导产生
; 安装程序初始定义常量
!define PRODUCT_NAME "MyApp"
!define PRODUCT_VERSION "1.4"
!define PRODUCT_PUBLISHER "My company, Inc."
!define PRODUCT_WEB_SITE "http://www.mycompany.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\main.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "D:\llm2\wxpython\source\bokeh.ico"
; 对应安装后文件夹中 uninst.exe 的图标
!define MUI_UNICON "D:\llm2\wxpython\source\bokeh-dev.ico"
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!insertmacro MUI_PAGE_LICENSE "D:\llm2\wxpython\source\YourSoftwareLicence.txt"
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR\main.exe"
!insertmacro MUI_PAGE_FINISH
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\MyApp"
InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
ShowInstDetails show
ShowUnInstDetails show
Section "MainSection" SEC01
  SetOutPath "$INSTDIR"
  SetOverwrite ifnewer
  File "D:\llm2\wxpython\dist\main.exe"
  CreateDirectory "$SMPROGRAMS\MyApp"
  CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\main.exe" "" "$INSTDIR\bokeh.ico"
  CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\main.exe" "" "$INSTDIR\bokeh.ico"
  File "D:\llm2\wxpython\source\bokeh.ico"
  File "D:\llm2\wxpython\source\bokeh-dev.ico"
  File "D:\llm2\wxpython\source\favicon16x16.ico"
SectionEnd
Section -AdditionalIcons
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateShortCut "$SMPROGRAMS\MyApp\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "$INSTDIR\favicon16x16.ico"
  CreateShortCut "$SMPROGRAMS\MyApp\Uninstall.lnk" "$INSTDIR\uninst.exe" "" "$INSTDIR\bokeh-dev.ico"
SectionEnd
Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\main.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\main.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
/******************************
 *  以下是安装程序的卸载部分  *
 ******************************/
Section Uninstall
  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\favicon16x16.ico"
  Delete "$INSTDIR\bokeh-dev.ico"
  Delete "$INSTDIR\bokeh.ico"
  Delete "$INSTDIR\main.exe"
  Delete "$SMPROGRAMS\MyApp\Uninstall.lnk"
  Delete "$SMPROGRAMS\MyApp\Website.lnk"
  Delete "$DESKTOP\MyApp.lnk"
  Delete "$SMPROGRAMS\MyApp\MyApp.lnk"
  RMDir "$SMPROGRAMS\MyApp"
  RMDir "$INSTDIR"
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd
#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#
Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
  Abort
FunctionEnd
Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
FunctionEnd
  

4. 快捷方式添加 ico

NSIS(Nullsoft Scriptable Install System)是一个开源的脚本安装系统,用于创建Windows平台上的安装程序。CreateShortCut 是 NSIS 中的一个函数,用于创建快捷方式。

以下是 CreateShortCut 函数的基本语法和参数说明:

  
CreateShortCut "[output path\shortcut name.lnk]" "[target path]" [parameters] [icon file] [icon index] [show mode] [hotkey] [comment]
参数说明:
[output path\shortcut name.lnk] # 指定输出快捷方式的路径和名称。
[target path] 	# 指定目标文件或程序的路径。
[parameters] 	# 可选参数,指定目标文件或程序的启动参数。
[icon file] 	# 可选参数,指定快捷方式图标所在文件的路径。
[icon index] 	# 可选参数,指定快捷方式图标在图标文件中的索引。
[show mode] 	# 可选参数,指定窗口显示模式(0代表隐藏窗口、1代表正常显示窗口、3代表最小化窗口)。
[hotkey] 		# 可选参数,指定激活快捷方式时要使用的热键。
[comment] 		# 可选参数,为快捷方式添加注释。
  

实例

  
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\main.exe" "站位符" "$INSTDIR\favicon16x16.ico"
  

在编译并运行安装程序之前,请确保将新的图标文件(.ico)与安装程序放置在同一目录下(实践,可以不在同一目录之下)

通过以上步骤,你就可以使用 NSIS 来 替换软件的图标了。记得保存并重新编译脚本以应用更改。

参考:https://linuxcpp.0voice.com/?id=135896

5. 故障解决

HM NIS Edit 2.0.3 向导模式下【“安装程序语言”无法选择的解决方法】

故障原因:语言文件不属于 NIS Edit,而是 NSIS,由 NIS Edit 调用 NSIS 编译器,所有的安装语言的文件都必须让 NIS Edit 找到。

处理办法:请确保已安装编译器(NSIS),并加载到 NIS Edit 编辑器中。

第一步:在 HM NIS Edit 2.0.3 菜单栏选择【NSIS(N)】->【配置】。

第二步:编译器,选择本地已安装的“makensis.exe”;帮助,选择对应的帮助文档。

第三步:应用并保存,再次进入向导模式后,“安装程序语言”界面可看到全部语言。

参考:https://blog.csdn.net/nazgul93/article/details/132593048

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号