VNISEdit 制作安装包

news2025/1/12 6:10:13

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 脚本向导

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

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

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

2.4. 安装程序语言

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

2.5. 背景窗口设置

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

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

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

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

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

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

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

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

2.8. 设置应用程序图标信息:

在这里插入图片描述

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

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

2.10. 解除安装

解除安装的方式有两种,如果你的 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 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

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

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

相关文章

OurBMC大咖说|第4期:基于飞腾腾珑E2000的国产化BMC固件开发简介

栏目介绍:"OurBMC大咖说" 是由 OurBMC 社区精心策划的线上讲座栏目,邀请 BMC 相关领域大咖共同探讨 BMC 全栈技术的发展趋势、挑战和机遇。无论你是初学者还是资深从业者,"OurBMC大咖说" 都将为你提供一个宝贵的学习和交…

如何确定IP地址的地理位置

IP地址的地理位置确定是一个复杂而精细的过程,它结合了多种技术与方法来推断或确定设备在网络中的大致物理位置。以下是对IP地址地理位置确定过程的详细解释: 首先,我们要理解IP地址本身并不能直接反映物理位置信息。IP地址主要是用于在网络中…

路由引入,过滤实验

实验拓补图 实验目的: 1、按照图示配置 IP 地址,R1,R3,R4 loopback口模拟业务网段 2、R1 和 R2 运行 RIPv2,R2,R3和R4运行 OSPF,各自协议内部互通 3、在 RIP 和 oSPF 间配置双向路由引入,要求除 R4 上的…

计算机java项目|springboot档案管理系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

工业级扫描式避障型激光雷达选型指南

工业级扫描式激光避障型传感器选型指南 在工业自动化领域,扫描式激光避障型传感器已成为不可或缺的关键组件。其高精度、高可靠性以及快速响应能力,使得机器人在复杂环境中能够安全、高效地执行任务。然而,面对市场上众多的传感器产品&#…

【S32DS RTD实战】-1.5-S32DS使用Post-Build调用第三方插件-自动对生成的s19,Hex,Bin文件二次编辑

<--返回「Autosar_MCAL高阶配置」专栏主页--> 案例背景&#xff1a; 在《【S32DS RTD实战】-1.3-S32K3工程生成S19&#xff0c;BIN&#xff0c;Hex文件&#xff0c;以及Post-build steps的妙用_s32ds如何生成s19或hex文件-CSDN博客https://blog.csdn.net/qfmzhu/articl…

RTU遥测终端为城市排水安全保驾护航!

近年来&#xff0c;全球气候变迁与城市化进程不断加速&#xff0c;导致强降雨事件频发&#xff0c;道路低洼地带、下穿式立交桥和隧道等区域在暴雨中常易积水&#xff0c;严重阻碍了人民的出行&#xff0c;甚至危及生命与财产安全。而传统的排水管网管理方式已难以适应现代城市…

【大模型系列】预训练

数据 数据预处理 预处理流程&#xff1a; 原始语料库—>质量过滤&#xff08;语种过滤、统计过滤、关键词过滤、分类器过滤&#xff09;—>敏感内容过滤&#xff08;有毒内容、隐私内容PII&#xff09;—>数据去重&#xff08;句子级别、文档级别、数据集级别&#…

【python】Python学生信息管理系统(源码+报告+本地存储)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

stack、queue(priority_queue)的模拟实现和deque的简单介绍

stack和queue(priority_queue) 1. 容器适配器 适配器(Adapter)&#xff1a;一种用来修饰容器(Containers)或仿函数(Functors)或迭代器(Iterator)接口的东西。 适配器是一种设计模式&#xff0c;该模式将一个类的接口转换成客户希望的另外一个接口。 现实中拿插座来说&#xf…

Linux:Win10平台上,用VMware安装Centos7.x及系统初始化关键的相关配置(分步骤操作,详细,一篇足以)

VMware安装Centos7.x镜像的详细步骤&#xff1a;VMWare安装Centos系统&#xff08;无桌面模式&#xff09; 我这里是为了安装Hadoop集群&#xff0c;所以&#xff0c;以下这些步骤是必须进行的 如果你是学习Linux&#xff0c;可以跳过非必须的那些配置项 我安装的版本是&…

水牛社靠谱吗,水牛社可以当做副业来做吗?

水牛社这个平台是否靠谱&#xff0c;能否作为副业的选择&#xff0c;一直是网友们热议的话题。实际上&#xff0c;水牛社是一个集合了众多网上赚钱活动任务和提供资源项目教程的综合性平台&#xff0c;它并非只局限于某一特定的项目&#xff0c;而是展现出多样化的特点。随着网…

总结Java中的synchronized

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 目录 总结*synchronized**初识synchronized*使用synchronizedsynchronized的特性(1)可重入性(2)自适应过程(3)锁消除(4)非公平锁(5)互斥锁 总结synchronized 初识synchronized 通过一个线程不安…

光明与速度:AI网络中GPU与光模块的协奏曲

&#x1f3b6;在人工智能&#xff08;AI&#xff09;的世界里&#xff0c;GPU和光模块是实现高速计算和数据传输的关键。它们如同一场精心编排的交响乐&#xff0c;每个部分都不可或缺&#xff0c;共同创造出美妙的和谐。&#x1f3bc; GPU&#xff1a;AI网络的心脏&#x1f4…

Python-GEE遥感云大数据分析、管理与可视化

原文链接&#xff1a;Python-GEE遥感云大数据分析、管理与可视化https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601238&idx2&sn6b0557cf61451eaff65f025d648da869&chksmfa820db1cdf584a76de953b96519704177e6206d4ecd47a2f2fabbcac2f7ea619b0bce184…

MATLAB中roots函数用法

目录 语法 说明 示例 二次多项式的根 四次多项式的根 提示 roots函数的功能是求解多项式的根。 语法 r roots(p) 说明 r roots(p) 以列向量的形式返回 p 表示的多项式的根。输入 p 是一个包含 n1 多项式系数的向量&#xff0c;以 xn 系数开头。0 系数表示方程中不存…

Linux的学习之路:19、进程信号(1)

摘要 今天这张说一下信号的一部分知识 目录 摘要 一、信号 1、生活角度的信号 2、技术应用角度的信号 3、注意 4、用kill -l命令可以察看系统定义的信号列表 5、信号处理常见方式概览 二、产生信号 1、通过终端按键产生信号 2、调用系统函数向进程发信号 3、由软件…

Fisher判别:理解数据分类的经典方法

在机器学习和统计分类的领域中&#xff0c;Fisher判别&#xff08;也称为Fisher线性判别分析&#xff09;是一种非常重要的方法&#xff0c;旨在从数据中提取重要特征&#xff0c;以实现对样本的分类。即Fisher判别分析&#xff08;Fisher Discriminant Analysis, FDA&#xff…

Midjourney-01 初试上手 注册使用并生成你的第一张AI图片 详细流程 提示词 过程截图 生成结果 付费文生图的天花板!

背景介绍 Midjourney是一款基于人工智能技术的绘画软件&#xff0c;利用深度学习算法来辅助用户进行绘画创作。这款软件能够通过用户输入的文本描述生成图像&#xff0c;支持多种生成方式&#xff0c;包括文字生成图片、图片生成图片和混合图片生成图片。 图像生成方式&#…

STM32之HAL开发——FSMC控制带控制器LCD(8080时序)

STM32FSMC模拟8080接口时序 ILI9341的8080通讯接口时序可以由STM32使用普通I/O接口进行模拟&#xff0c;但这样效率太低&#xff0c;STM32提供了一种特别的控制方法——使用FSMC接口实现8080时序。 由于FSMC外设可以用于控制扩展的外部存储器&#xff0c;而MCU对液晶屏的操作实…