NSIS 的使用心得
最近开发了一个项目,需要做成安装程序给客户,但是使用微软的安装和部署却遇到了很多的问题。而且编译得到的文件非常的大,无奈之余,发现一个很好的安装程序自作软件----NSIS(Nullsoft Scriptable Install System),这是一个基于脚本的安装程序制作工具,不仅使用了安装程序制作向导,而且还可以自定义开发自己的应用,简单而且使用,并且压缩后的文件想当的小,感觉很好,特介绍给大家。
NSIS的官方地址是:http://nsis.sourceforge.net/Main_Page
NSIS的下载地址是:http://nsis.sourceforge.net/Download,目前最新的版本为2.45
NSIS的帮助文档是:http://nsis.sourceforge.net/Docs/,并且在安装中也带有自己的安装文档。
NSIS的官方定义是:
NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.
下面是我使用NSIS的一些体会,NSIS使用非常方便,而且对我这个喜欢编程的人来说更加容易:
判断DotNetFrameWork是否安装,可以自己添加如下的代码:
Function IsNetfx35Installed
;Check is Net 3.5 is install
;Push 0 for true, Pop -1 for false
${registry::Read} "HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v3.5" "SP" $R0 $R1
${If} $R1 == ""
Push -1
${Else}
Push 0
${EndIf}
FunctionEnd
这是一个定义函数,他首先可以使用${registry::Read}来读取注册表中的值,并放入$R0 $R1,分别是类型和值,判断获取的值是不是为空,就可以判断是不是安装过.NET Framework 3.5了。
安装.NET Framework 3.5:
Function InstallDotNetFx
SetOutPath "$PLUGINSDIR"
Banner::show /NOUNLOAD "正在安装.NET运行库,请耐心等待..."
ExecWait '"$EXEDIR\DotNetFX35\dotNetFx35setup.exe"' $0
pop $0
${If} $0 != "0"
Banner::destroy
abort
${EndIf}
Banner::destroy
FunctionEnd
这是.NET Framework 3.5的安装,我选择了dotNetFx3.5的离线安装包,并将其放在安装文件的目录下,这样可以不把
.NET Framework 3.5打包到程序中,减少程序的大小。$EXEDIR是NSIS的内部程序常量,可以获取安装文件的目录。而且他还提供了很多的内部宏和常量。
插件的自作,需要访问已经安装的程序目录,这就要使用对其注册表的方法,将程序的安装目录获取,对于NSIS,这也是相当的简单的。
首先在安装目录的最上方:
InstallDir "$PROGRAMFILES\Test"
修改为:
InstallDirRegKey HKLM "SOFTWARE\Test" "Path"
然后在Function .onInit中添加如下的内容:
StrCmp $INSTDIR "" 0 Continue
MessageBox MB_OK|MB_ICONSTOP "Test 未安装,请先安装Test。"
Abort
Continue:
相当的简单。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述