VNISEdit 制作安装包

1. 环境依赖

1.1. NSIS 下载

下载地址:https://nsis.sourceforge.io/Download
在这里插入图片描述

1.2. VNISEdit 下载

下载地址1:https://sourceforge.net/projects/hmne/
下载 exe 安装。
在这里插入图片描述
下载地址2:https://hmne.sourceforge.net/
可以下载 exe 安装。也可以使用源码。
在这里插入图片描述
下载之后解压
nisedit203-src-decompression

2. 使用 VNISEdit 制作安装包

2.1. 打开安装向导

cmd 搜索 edit。或者使用桌面快捷方式。
在这里插入图片描述
选择 [文件]–>[新建脚本:向导]
在这里插入图片描述

2.2. 进入到 NSIS 脚本向导 共8步

按照向导引导进行制作:
在这里插入图片描述

2.3. 填写应用程序基本信息 8-1

其中必填的是程序名称和版本,其他没有的话是可以不填的。应用程序标志会显示在安装包界面下沿,可以写上版权信息,或者是公司信息。
在这里插入图片描述

2.4. 安装程序语言 8-2

Error.安装程序语言栏为空。出现这种状况的原因是 VNISEdit 调用 NSIS 核心,但语言文件并不属于 VNISEdit,而是 NSIS,所有的安装语言的文件都必须让 VNISEdit 找到,我们需要调整 VNISEdit 默认读取路径,找到上面一栏的 NSIS,然后点击配置。
参考:https://blog.csdn.net/weixin_46847476/article/details/105537269
在这里插入图片描述
安装程序(而非安装后程序)图标可以自己设置,安装程序文件指的是安装包的文件名。

2.5. 背景窗口设置 8-3

是安装过程中的背景,基本上可以不用设置。
在这里插入图片描述

2.6. 设置应用程序的目录和授权信息 8-4

这里的第一行非常重要,决定了你的程序一堆文件默认装在哪里,默认地址最好选择 $PROGRAMFILES*你的程序名文件夹*,不存在时将被创建,这里的 $PROGRAMFILES 每台电脑都不一样,但是都是系统识别的位置, $是一个转义符, $PROGRAMFILES代表程序安装目录,除此之外还有其他地址代号,代表不同的意思。
在这里插入图片描述
给大家列举一些常用的地址代号,排除了不常用的代号:

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

这三个是最常用的,其他还有一些代号,但是你在编辑的时候通常是不需要使用的。

第二行许可证协议可以放置协议,可以设置三种同意的方式的一种。如果你不需要协议,可以通过删代码来实现,请参照后面的内容。
需要注意的是,中文的协议会乱码,最好使用英文协议或者改变编码形式。自定义协议文件效果。
在这里插入图片描述

2.7. 选择应用程序文件和依赖的库 8-5

继续指定应用程序文件,在这里我们添加程序所在的整个目录:
在这里插入图片描述

2.8. 设置应用程序图标信息 8-6

在这里插入图片描述

2.9. 设置安装完成后自动运行程序 8-7

实际上它会给用户一个勾选框,征求用户的意见。
如果你的程序是带参数运行的,那么,可以加入参数(就是在 cmd 运行时的给定的参数),自述文件就是 ReadMe.txt 之类的文件,如果你在程序目录下写了自述文件,会打开它,同样也会征求用户意见。在这里插入图片描述

2.10. 解除安装 8-8

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

2.11. 保存并编译脚本

设置一个脚本名称后进行编译:
在这里插入图片描述

2.12. 编译脚本

在这里插入图片描述
选择文件名,保存。
在这里插入图片描述
编译成功后,在main.exe程序目录下会增加一个Setup.exe文件。点击改文件可进行安装。
在这里插入图片描述
一路确认,运行成功。安装时可以选择安装路径。
开始菜单里面增加了 MyApp文件夹。桌面增加了 MyApp 快捷键。
在这里插入图片描述
在这里插入图片描述
安装文件
在这里插入图片描述

点击MyApp,可以打开程序。
在这里插入图片描述

3. VNISEdit 脚本说明

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生; 安装程序初始定义常量
!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 showSection "MainSection" SEC01SetOutPath "$INSTDIR"SetOverwrite ifnewerFile "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"
SectionEndSection -AdditionalIconsWriteIniStr "$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"
SectionEndSection -PostWriteUninstaller "$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 UninstallDelete "$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.onInitMessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2Abort
FunctionEndFunction un.onUninstSuccessHideWindowMessageBox 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981335.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

实体书营销:“三三裂变”,实操细节分享……

实体书营销:“三三裂变”,实操细节分享 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: …

K-means聚类算法:如何在杂乱无章的数据中找出规律?

什么是K-means聚类算法? 在编程的世界里,K-means聚类算法就像一位无私的指路人,它不需要我们给出明确的指示,只需要我们提供数据,它就能帮助我们找到数据的归属,找到数据的“家”。 K-means聚类算法的名字…

1000. 合并石头的最低成本(H)/ 1312. 让字符串成为回文串的最少插入次数(H)/ 区间DP!!!

1000. 合并石头的最低成本 官方题解(含python)其他题解 1312. 让字符串成为回文串的最少插入次数 官方题解 class Solution:def minInsertions(self, s: str) -> int:n len(s)# dp[i][j] 表示对于字符串 s 的子串 s[i:j](这里的下标从…

【Python】基础知识(函数与数据容器)

笔者在C语言基础上学习python自用笔记 type() 返回数据类型 name "root" hei 1.8 wei 77 type_hei type(hei) type_wei type(wei) print(type(name)) print(type_hei) print(type_wei)在python中变量是没有类型的,它存储的数据是有类型的。 数据类…

如何删除“上传到移动云盘”右键菜单

问题表现 如题,“上传到移动云盘”的右键菜单非常难删除,按照网上的右键菜单注册表删除通用教程也没找到 解决方法 实际上,该菜单的位置在注册表中的 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\就是删除里…

Kafka 可视化管理工具 CMAK 启动错误 -- 命令行太长 问题解决

一、安装环境描述: Kafka版本:kafka_2.13-2.8.1cmak 版本:cmak-3.0.0.6安装环境:windows 11 二、问题描述 当我们在 命令行启动 cmak.bat 命令时,会报如下错误: 命令行太长三、解决办法 修改 cmak.bat…

CUDA线程管理

核函数在主机端启动时,执行会转移到设备上,并且将控制权转移回主机。当核函数在GPU上运行时,主机可以运行其他函数。因此,主机与核函数是异步的。 此时,设备端也就是GPU上会产生大量的线程,并且每个线程都…

世界读书日|看看阿里内部的技术大牛们推荐了什么书?

AI 时代,技术呈指数级发展,我们越来越关注,如何持续学习提升,跟上时代的步伐。 刚好借着世界读书日的契机,我们邀请了阿里内部的技术大牛们,分享他们在 AI 时代持续学习的过程中,推荐的一些内容…

黄金行情下跌有投资机会吗?

尽管黄金价格的波动常常引起投资者的高度关注,但行情的下跌未必只是警讯,亦可能蕴藏着某些难得的投资机会。总之,答案是肯定的——在黄金行情下跌时,依旧有适宜的投资机会,只是这需要投资者具备相应的应对知识和策略。…

Msfvenom生成木马实验

E025-渗透测试常用工具-使用msfvenom生成木马进行渗透测试 第一步,打开网络拓扑,点击启动选项,启动实验虚拟机 第二步,使用ifconfig和ipconfig命令分别获取渗透机和靶机的IP地址,使用ping命令进行网络连通性测试&…

关于Java的三个小题目(很容易错!)

第一题 char运算后的数据类型 最后输出的是什么类型? 答案:int char与byte的联系和区别 char是无符号型的,能够表示一个整数,不能表示负数(0~65535);而byte是有符号型的,能够表示…

航空业微服务架构中台的构建与实践

随着航空业的快速发展,航空公司需要面对更加复杂的业务环境和客户需求。在这样的背景下,构建一个稳健、高效的微服务架构中台成为了航空公司的当务之急。本文将探讨航空业微服务架构中台的设计理念、关键技术以及实践经验,帮助航空公司构建具…

Jina Reranker 新模型发布,更小、更快、更便宜!

在传统文本搜索技术已经相对成熟的背景下,如何进一步提高搜索的效率和速度成为了新的追求目标。应对这一挑战,Jina Reranker 模型系列推出了两款针对性能调优的新模型:jina-reranker-v1-turbo-en 和 jina-reranker-v1-tiny-en,它们…

矽塔SA6288Q栅极驱动器,可替代峰绍FD6288Q

SA6288 是一款集成了三个独立半桥栅极驱动器,特别适合于三相电机应用中高速功率MOSFET 和 IGBT 的栅极驱动。可在高达250V 电压下工作。 SA6288内置 VCC 和 VBS 欠压( UVLO )保护功能,防止功率管在过低的电压下工作,…

赛劲SEJINIGB零背隙滚轮齿条齿圈产品助力高精度运动平台

在高度精密化的工业时代,传统齿轮齿条系统所面临的背隙、摩擦粉尘、润滑等问题愈发凸显,这些问题不仅限制了设备的精度和稳定性,还对生产效率和产品质量造成严重影响。为此,赛劲SEJINIGB经过长期研发和技术积累,推出了…

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 (1)系统具备用户管理功能,包括用户注册、登录、权限管理等功能。 (2)系统具备格式规范管理功能,包括格式规范创建、编辑、删除等操…

两天速通阿里

感觉这一周太梦幻了,就像一个梦,很不真实~~~ 感觉这个暑期,我的运气占了99成,实力只有百分之一 4.15上午 腾讯csig 腾讯云部门,面完秒进入复试状态 4.16下午 美团优选供应链部门,4.18上午发二面 4.17晚上 阿…

2款摄像头录像软件,满足你的多种要求!

“有没有一款能够录制摄像头视频的软件呀?我计划录制一些生活小窍门和教学视频,想要能清楚地拍到自己的操作过程。但找了好多软件,都不太满意,真心希望大家能给我推荐几款好用的摄像头录像软件,最好能简单易上手的&…

vue2项目升级到vue3经历分享

依据vue官方文档,vue2在2023年12月31日终止维护。因此决定将原来的岁月云记账升级到vue3,预计工作量有点大,于是想着把过程记录下来。 原系统使用的技术栈 "dependencies": {"axios": "^0.21.1","babel-…

js鼠标经过就增加一个open 进行展开 遍历数组,为每个id对应的元素添加事件监听器

js鼠标经过就增加一个open 进行展开 遍历数组,为每个id对应的元素添加事件监听器 {% javascript %}const ids [Details-HeaderMenu-aaaaaa2,Details-HeaderMenu-aaaaaa6, Details-HeaderMenu-aaaaaa4,Details-HeaderSubMenu-1,Details-HeaderSubMenu-2,Details-H…