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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基础算法---前缀和

文章目录 基本思想1.前缀和2.子矩阵的和3.长度最小的子数组4,除自身以外数组的乘积总结 基本思想 前缀和数组就是一个数组的前i项和 前缀和的用处:前缀和数组求出来之后我们就可以就可以求数组中的某个特定区间的和 就比如说求l到R的和,我…

linux休眠唤醒流程,及示例分析

休眠流程 应用层通过echo mem > /sys/power/state写入休眠状态,给一张大概流程图 这个操作对应在kernel/power/main.c的state这个attr的store操作 static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,const char *buf, size_t n) …

网站想实现HTTPS访问需要有哪些步骤?

网站要实现HTTPS访问,以确保数据传输安全和提升用户信任度,主要需按以下步骤操作: 1. 购买或申请SSL证书: - 根据网站类型和需求,选择合适的SSL证书:DV(域名验证)、OV(组…

Maxwell安装使用和简单案例

一、解压 cd /opt/software/ ​ tar -zxvf maxwell-1.29.2.tar.gz -C /opt/module/ ​ cd /opt/module/ 二、MySQL 环境准备 1、修改 mysql 的配置文件 修改 mysql 的配置文件,开启 MySQL Binlog 设置 vi /etc/my.cnf 添加以下内容 server_id1 log-binmysql-…

冈萨雷斯数字图像处理资源(课后习题答案+代码+图片)

冈萨雷斯数字图像处理相关资源整理,资源全部来源互联网,方便大家下载 冈萨雷斯数字图像处理相关资源整理 课后习题 冈萨雷斯数字图像处理源代码

etcd campaign

1. 引言 本文主要讲解使用etcd进行选举的流程,以及对应的缺陷和使用场景 2. etcd选举流程 流程如以代码所示,流程为: clientv3.New 创建client与etcd server建立连接 concurrency.NewSession 创建选举的session,一般会配置ses…

微信小程序一到六章总结

第一章总结 认识微信小程序 小程序简介 微信(WeChat) 是腾讯公司于2011年1月21 日推出的一款为智能终端提供即时通信服务的应用程序。 小程序、订阅号、服务号、企业微信(企业号)属于微信公众平台的四大生态体系,它们面向不同的用户群体&…

Harmony OS应用开发性能优化全面指南

优化应用性能对于应用开发至关重要。通过高性能编程、减少丢帧卡顿、提升应用启动和响应速度,可以有效提升用户体验。本文将介绍一些优化应用性能的方法,以及常用的性能调优工具。 ArkTS高性能编程 为了提升代码执行速度,进而提升应用整体性…

若依如何去掉“正在加载系统资源,请耐心等待”

最近有网友反馈这个加载动画很丑,问我如何去掉: 首先找到前端页面的index.html文件,去掉或注释掉如下代码:

使用Gitee进行社交登录的流程

使用Gitee进行社交登录 创建Gitee第三方应用流程: 鼠标移动到个人头像上,点击账号设置 点击账号设置,选择左边目录下数据管理的第三方应用 然后选择创建应用 根据要求填写 填写好了上面的要求之后,点击创建应用,这样&…

【Java】如何获取客户端IP地址

在项目中往往涉及到“获取客户端IP地址”,常见到下面这样子的代码: package com.utils;import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.http.server.reactive.ServerHttpRequest; import java.net…

前端JS必用工具【js-tool-big-box】,获取浏览器参数、cookie、localStorage的存取

这一小节,我们针对js-tool-big-box工具做一些使用讲解,主要获取浏览器参数、cookie、localStorage的存取方面的。 这些方法差不多每次项目中要么用不到,要么就自己写一份,轮子造的很重复啊,而且localStorage有时候要求…

牛客网:环形链表的约瑟夫问题

🎁个人主页:我们的五年 🔍系列专栏:每日一练 🌷追光的人,终会万丈光芒 目录 🏝1.问题描述: 🏝2.实现代码: 🏝1.问题描述: 前言&am…

windows系统CUDA的详细安装教程

CUDA系列 文章目录 CUDA系列前言一、CUDA简介二、安装配置视频教程三、CUDA的下载及安装3.1 环境检查3.2 CUDA 安装包下载3.3 安装CUDA(略)3.4 验证CUDA是否安装成功 四、cuDNN的下载及安装4.1 cuDNN下载4.2 cuDNN配置 五、配置环境变量六、下载并配置zl…

springboot 集成 i18n实现国际化信息返回 实现中英文切换 实现网站支持多语言切换

还是直接上代码 目前实现了 中英文 返回 别的语言 都差不多 主要用spring boot 自带的 类实现的 不用引入任何 依赖 使用的就是下面的类 org.springframework.context.MessageSource 是 Spring Framework 中用于支持国际化(Internationalization,简称 i…

把 WordPress 变成 BaaS 服务:API 调用指南

有了前面两篇内容的铺垫,我们来聊聊 WordPress 作为 CMS / BaaS 服务使用时绕不开的问题,API 调用。 这篇内容同样的,会尽量少贴代码,简单的讲清楚一件事,降低阅读负担。 写在前面 首先,我们需要进行清晰…

使用autocannon和0x对网站进行性能分析(node)

npm i autocannon -g autocannon -c 100 -d 5 -p 10 http://localhost:3000/ 0x -o app.js 火焰图是根据程序的栈的状态对出现函数的采样数据统计而得,宽度代表函数运行一次所需的时长、高度代表栈的层数、颜色深度代表函数在采样中出现的频率,因此宽度…

手摸手教你把Ingress Nginx集成进Skywalking

背景 在微服务大行其道的今天,如何观测众多微服务、快速理清服务间的依赖、如何对服务之间的调用性能进行衡量,成了摆在大家面前的难题。对此,Skywalking应运而生,它是托管在 Apache 基金会下的开源项目,旨在帮助开发…

vue element-ui 表格横向滚动条在合计项下方

目前效果 需求效果 1.隐藏bodyWrapper滚动条,显示footerWrapper滚动条 css代码如下: div ::v-deep .el-table--scrollable-x .el-table__body-wrapper{overflow-x: hidden!important;z-index: 2!important;} div ::v-deep .el-table__footer-wrapper …

git的安装与配置教程--超详细版

一、git的安装 1. 官网下载git git官网地址:https://git-scm.com/download/win/ 选择需要的版本进行下载 2、下载完成之后,双击下载好的exe文件进行安装。 3、默认是C盘,推荐修改一下路径,然后点击下一步 4、Git配置&#xff…