简单使用NSIS打包软件

news2024/10/5 18:25:43

NSIS是一个开源的打包工具.

官网:  Download - NSIS (sourceforge.io)

使用这个编译

但是不建议使用这玩意写脚本,字体太难看了.我用vscode写的脚本,用这个编译的.

 写好脚本用这个软件打开, 然后选择这个编译,如果语法有错误 会编译不过,会提醒你哪一行不行,如果编译通过了是这样的.

文件后缀是.nsi

 vscode上有这个NSIS插件

语法就不介绍了,比较简单,记录一下我用到的

!define FIXDPRE_VERSION "1.0.1"

!define是定义全局变量的,前面是名称,后面是值

Function .onInit
SetRegView 64
ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""
${If} $0 == ""
    MessageBox MB_OK "The vision service is not installed, install it first."
	Abort
${EndIf}
StrCpy $INSTDIR "$0\Bin\plugins"
FunctionEnd

Function .onInit这个是初始化函数,脚本运行前会执行这里面的命令.

"${PRODUCT_DIR_REGKEY}"这个是读取变量中的值

MessageBox MB_OK "The vision这个是弹窗命令,

Abort是中止.

ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""这句话是查看注册表中是否有这个服务,我这是打包了一个插件,所以需要查看服务是否安装,如果没有安装就要中止安装插件.

Name "${PRODUCT_NAME}"

这个是安装弹框的插件名字,后面的setup是默认的.

OutFile "VisionPluginInstaller.exe"

这个是打包的名字

InstallDir $INSTDIR

这个是安装路径.默认是这个地址

这个是模块,用来指定安装什么内容的,

Section "FixedPrefixEncoding ${FIXDPRE_VERSION}"  FixedPrefixEncoding
    SetOutPath "$INSTDIR\FixedPrefixEncoding"
    File ".\x64\FixedPrefixEncoding\Release\bin\FixedPrefixEncoding.dll"
SectionEnd

"FixedPrefixEncoding ${FIXDPRE_VERSION}" 这个是下图显示可选的模块显示的字符串.  

FixedPrefixEncoding 这个是个变量,用在后面指定要不是安装这一块的.

这一块就是指定安装模块的,这里有几个上图就有几个可选择的模块.

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${FixedPrefixEncoding} "FixedPrefixEncoding"
  !insertmacro MUI_DESCRIPTION_TEXT ${FixedPrefixEncodingConfig} "FixedPrefixEncodingConfig"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

 基本上就是这些了.我目前用到的也就这个了.还有好多细节没说,比如lisence怎么定义,下面是一个exe.

!insertmacro MUI_PAGE_LICENSE ".\lisence.txt"

比如这就是定义授权的,在脚本路径下添加一个txt安装的时候就会显示这个文件内容.

 

!define MUI_ABORTWARNING
!define MUI_ICON ".\x64\image\a.ico"

这个是定义图标的.

; Script generated by the HM NIS Edit Script Wizard.

!define PRODUCT_NAME "Vision Plugin"
!define FIXDPRE_VERSION "1.0.1"
!define PRODUCT_PUBLISHER "AAA Limited. "
!define PRODUCT_DIR_REGKEY "Software\AAA\Vision service"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON ".\x64\image\a.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE ".\lisence.txt"
; Components page
!insertmacro MUI_PAGE_COMPONENTS
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"

; MUI end ------

Function .onInit
SetRegView 64
ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""
${If} $0 == ""
    MessageBox MB_OK "The vision service is not installed, install it first."
	Abort
${EndIf}
StrCpy $INSTDIR "$0\Bin\plugins"
FunctionEnd

Name "${PRODUCT_NAME}"
OutFile "VisionPluginInstaller.exe"
InstallDir $INSTDIR


Section "FixedPrefixEncoding ${FIXDPRE_VERSION}"  FixedPrefixEncoding
    SetOutPath "$INSTDIR\FixedPrefixEncoding"
    File ".\x64\FixedPrefixEncoding\Release\bin\FixedPrefixEncoding.dll"
SectionEnd

Section "FixedPrefixEncodingConfig" FixedPrefixEncodingConfig
    SetOutPath "$INSTDIR\FixedPrefixEncoding\config"
    File ".\x64\FixedPrefixEncoding\Release\bin\config\FixedPrefixEncodingConfig.json"
SectionEnd

; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${FixedPrefixEncoding} "FixedPrefixEncoding"
  !insertmacro MUI_DESCRIPTION_TEXT ${FixedPrefixEncodingConfig} "FixedPrefixEncodingConfig"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

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

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

相关文章

java的23种设计模式03-创建型模式02-抽象工厂方法

一、抽象工厂方法 1-1、抽象工厂方法的定义 抽象工厂模式是一个比较复杂的创建型模式。 抽象工厂模式和工厂方法不太一样,它要解决的问题比较复杂,不但工厂是抽象的,产品是抽象的,而且:有多个产品需要创建&#xff…

python中isinstance函数判断各种类型的小细节

1. 基本语法 isinstance(object, classinfo) Return true if the object argument is an instance of the classinfo argument, or of a (direct, indirect or virtual) subclass thereof. Also return true if classinfo is a type object (new-style class) and object is…

媒体播放器及媒体服务器软件Plex

什么是 Plex ? Plex 是一套媒体播放器及媒体服务器软件,让用户整理在设备上的有声书、音乐、播客、图片和视频文件,并通过流式传输至移动设备、智能电视和电子媒体播放器上。Plex 可用于 Windows、Android、Linux、OS X和 FreeBSD。 在接触 N…

什么是IoT物联网平台?

在数字化浪潮的席卷下,物联网(IoT)技术逐渐渗透到我们生活的方方面面,从智能家居到智慧城市,从工业自动化到智能农业,IoT正以其独特的魅力改变着世界。然而,当我们谈论IoT时,我们究竟…

mysql timestamp有关于2038年的限制

1、改datetime当然是一了百了,但是如果需要设置default,则需要mysql版本在5.6及以上; alter table payment modify create_time datetime default CURRENT_TIMESTAMP null comment 创建时间; alter table payment modify update_time dateti…

嵌入式单片机学习思路感想分享

今天看到了一个提问,原话如下: 曾经干了8年单片机工程师,对工程师从入门,到入行,再到普通,再到高级,整个路径还算清晰,比如什么阶段,会碰到什么瓶颈,怎么突破,我都经历过。 这个同学,有个典型的问题,就是学得太多且杂了,估计稍微复杂点的项目,做不出来。 现在…

【Python循环3/5】条件循环语句

目录 导入 条件循环 边界条件 while循环 死循环 while循环与for循环的区别 总结 知识图谱 导入 我们已经学习了如何利用for语句实现代码重复执行的循环结构。通过遍历列表,输出其中的每一个元素。 for循环就像是排队办事,一个个进入,轮…

跨境电商应该用什么样的服务器?多大带宽?

跨境电商在选择服务器 和带宽时,需要考虑多个因素,包括业务规模、用户数量、网站流量、地理位置等。下面是一些关键考虑因素: 1、服务器类型 跨境电商通常会选择使用云服务器,因为云服务器具有灵活性、可扩展性和高可用性。云服务…

PTA L2-019 悄悄关注

新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能…

消息队列面试题

目录 1. 为什么使用消息队列 2. 消息队列的缺点 3. 消息队列如何选型? 4. 如何保证消息队列是高可用的 5. 如何保证消息不被重复消费(见第二条) 6. 如何保证消息的可靠性传输? 7. 如何保证消息的顺序性(即消息幂…

腾讯云Kubernetes的容器服务平台TKE以及函数计算服务云感受

目录 一、整体结构 二、内容深度 三、技术实用性 一、容器技术 1. 腾讯自身 2. 美团 二、函数计算技术 1. 滴滴出行 2. 小红书 实际应用 容器技术实践示例 函数计算技术实践示例 高级技术探讨示例 书中感受 这边文章是对《2023腾讯云容器和函数计算技术实践精选集…

Linux中文件和目录管理(创建删除移动复制)

目录 1——一次建立一个或多个目录:mkdir ​2——创建一个空文件:touch 3——移动和重命名:mv 4——复制文件和目录:cp 5—— 删除目录和文件:rmdir和rm 在学习文件与目录的管理的一些命令之前,我们先…

LLM+Embedding构建问答系统的局限性及优化方案

LangChain LLM 方案的局限性:LLM意图识别准确性较低,交互链路长导致时间开销大;Embedding 不适合多词条聚合匹配等。 背景 在探索如何利用大型语言模型(LLM)构建知识问答系统的过程中,我们确定了两个核心…

集成学习 | 集成学习思想:Bagging思想

目录 一. Bagging思想1. Bagging 算法2. 随机森林(Random Forest)算法 在正文开始之前,我们先来聊一聊什么是集成学习? 集成学习是一种算法思想:将若干个弱学习器分组之后,产生一个新的学习器 弱学习器指预测误差在50%以下的学习器…

【Linux网络编程七】网络序列化和反序列化(网络版本计算器)

【Linux网络编程七】网络序列化和反序列化(网络版本计算器) 一.网络读取问题【解决方案】1.定制协议2.序列化和反序列化3.添加报头①封包②解包 4.框架总结 二.自定义协议:网络计算器协议Ⅰ.客户端发送请求,服务器端接收请求1.构建请求(结构化…

VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

SAP Business Application Studio(BAS) 中Git的使用

1. 概要 本文将介绍如何在SAP BAS中使用Git。 2. BAS中Git功能的集成方式 2.1 简化版Git视图(Simplified Git View) 通过简化版Git视图,开发人员可以执行最常用的一些Git操作,例如: 初始化或克隆一个仓库reposito…

【matlab】如何将.mat文件与.nii文件互转

【matlab】如何将.mat文件与.nii文件互转 .mat转为.nii文件 有时候代码需要读取的是.nii文件,但是如何现有的数据是.mat格式,需要将.mata转化为.nii文件 1、先加载.mat文件 % 加载.mat文件 load(your_mat_file.mat); % 请将your_mat_file.mat替换为实…

曹洞佛学院2024年 “中国传统文化(书法)研究班”招生简章

曹洞佛学院 中国传统文化 (书法) 研究班 一、曹洞佛学院简介 2016年10月,曹洞佛学院经国家宗教事务局批准正式成立。曹洞佛学院是全国唯一一所以宗派命名的佛学院,学院坐落于江西省抚州市宜黄县曹洞宗祖庭——曹山宝积寺。   …

Dagger2相关知识

目录 一、Dagger简介1.1 什么是Dagger?1.2 Dagger用来干什么?1.3 使用Dagger2注入对象1.4 Dagger注解 二、Dagger2使用2.1 非单例2.2 局部单例2.3 全局单例 三、参考链接 一、Dagger简介 1.1 什么是Dagger? Dagger 2 是一个由 Google 开发的依赖注入框架&#x…