儿时,哭是大家解决问题绝技;长大以后,笑是大家接受现实武器
表明
作为一个前端工程师工作人员,会来写NSIS
装包脚本制作,加上网络上的资料屈指可数,确实有一些困难了。还好有志者事竟成,处理完的难题在这儿作个共享纪录,希望能够在大伙儿需要时给到你协助。
注:下边默认设置指windows自然环境
中的装包。
文章正文
1. 特定默认设置安装文件
!macro preInit
# 特定安装文件
SetRegView 64
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files\Rabbit"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files\Rabbit"
SetRegView 32
WriteRegExpandStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files (x86)\Rabbit"
WriteRegExpandStr HKCU "${INSTALL_REGISTRY_KEY}" InstallLocation "C:\Program Files (x86)\Rabbit"
!macroend
表明:不必不正确的觉得这儿的64
、32
指即将安装流程的操作系统的个数,它具体指装包出的程序流程个数。
例:装包出去64
位rabbit.exe
安装流程,无论操作系统的个数,都是会默认设置安装在C:\Program Files\Rabbit
目录下。
2. 分辨 Windows 操作系统的个数
点击这里免费下载x64.nsh
脚本制作
!include x64.nsh
!macro customInstall
## 64位电脑操作系统
${If} ${RunningX64}
# TODO
## 32位电脑操作系统
${Else}
# TODO
${EndIf}
!macroend
3. 分辨 Windows 操作系统的版本号
点击这里免费下载WinVer.nsh
脚本制作
!include WinVer.nsh
!macro customInstall
## 系统为win10系统或是更高一些
${If} ${AtLeastWin10}
# TODO
${EndIf}
!macroend
表明:
AtLeastWin<version>
检验是不是高过特定版本号
IsWin<version>
检验特定版本号(唯一限制版本号)
AtMostWin<version>
检验是不是小于特定版本号
<version>
容许数值:
95、98、ME、NT4、2000、XP、2003、Vista、2008、7、2008R2、8、2012、8.1、2012R2、10、11
4. 关掉/打开 Win64 位安装文件跳转
点击这里免费下载x64.nsh
脚本制作
!include x64.nsh
!macro customInstall
# 关掉64位安装文件跳转
${DisableX64FSRedirection}
# TODO
# 打开64位安装文件的跳转
${EnableX64FSRedirection}
# TODO
!macroend
表明:有关文档跳转的描述,查询这儿
5. 形成 JSON 文档
形成JSON
文档,需要用到NsJSON软件
。
点击这里免费下载NsJSON.zip
压缩文件,缓解压力再进入到NsJSON\Plugins
途径下
如上图所述,每一个文件夹名称下发着相匹配操作系统的dll软件
进到C:\Users\rabbit\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\Plugins
途径下
将dll软件
放进相对应的文件夹名称下。
留意:以上rabbit
途径是我登录名,nsis-3.0.4.1
途径是我nsis
版本号,请根据自己的具体情况做变动。
!macro customInit
# 载入clientconfig.json文档
nsJSON::Set /value `{}`
nsJSON::Set `name` /value `"rabbit"`
nsJSON::Set `man` /value `true`
nsJSON::Serialize /format /file "C:\Users\Public\Rabbit\clientconfig.json"
!macroend
6. 检验反复组装
最先确定nsis
配置项中一定配备了guid
字段名,如下所示:
nsis: {
guid: 'Rabbit',
oneClick: true,
perMachine: true,
allowElevation: true,
installerIcon: 'public/favicon.ico',
uninstallerIcon: 'public/favicon.ico',
installerHeaderIcon: 'public/favicon.ico',
createDesktopShortcut: true,
createStartMenuShortcut: true,
shortcutName: 'Rabbit',
deleteAppDataOnUninstall: true,
include: './build/installer.nsh',
runAfterFinish: true
}
配备了guid
字段名后,软件安装之后在注册表文件HKEY_LOCAL_MACHINE\SOFTWARE
下边形成Rabbit
表项,不然是一串相近hash
的表项,且每一次组装都不一样
!macro customInit
# 检验反复组装
ReadRegStr $0 HKLM "SOFTWARE\Rabbit" "ShortcutName"
${If} $0 != ''
MessageBox MB_OK|MB_ICONSTOP "Rabbit已下载计算机中。如果需要重装,请卸载掉现有的组装。"
Quit
${EndIf}
!macroend
7. 确定弹出窗口
以卸载掉进行重新启动为例子:
!macro customUnInstall
# 卸载掉进行是不是重新启动
MessageBox MB_YESNO '您必须重启系统软件才能使对 Rabbit 作出配置改动起效。点击"是"马上重启,点击"否"在日后以人工方法重启。' IDYES label_yes IDNO label_no
label_yes:
Reboot
Goto end
label_no:
Goto end
end:
!macroend
8. 注册服务
注册服务,需要用到SimpleSC软件
。
注:不能将Electron
程序流程本身注册为服务项目,因为没达到系统服务的前提条件。这儿所指安装中申请注册第三方程序流程为服务。
首先要同[5. 形成 JSON 文档]
处同样,将dll软件
放进相对应的文件夹名称下。这儿给到你2个SimpleSC软件
的下载链接:
Unicode版本号、ANSI版本号。
!macro customInstall
# 组装并启动 RabbitService 服务项目
SimpleSC::InstallService "RabbitService" "RabbitService" "16" "2" '"C:\Program Files\RabbitService.exe"' "" "" ""
SimpleSC::StartService "RabbitService" "" 30
!macroend
!macro customUnInstall
# 卸载掉 RabbitService 服务项目
SimpleSC::StopService "RabbitService" 1 30
Pop $0 ; returns an errorcode (<>0) otherwise success (0)
IntCmp $0 0 Done 1 1
Push $0
SimpleSC::GetErrorMessage
Pop $0
MessageBox MB_OK|MB_ICONSTOP "Stopping Service fails - Reason: $0"
Done:
SimpleSC::RemoveService "RabbitService"
!macroend
末尾
以后还会继续填补!!!
本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!