下边默认设置指windows自然环境中的装包

lxf2023-12-15 10:30:02

儿时,哭是大家解决问题绝技;长大以后,笑是大家接受现实武器

表明

作为一个前端工程师工作人员,会来写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

表明:不必不正确的觉得这儿的6432指即将安装流程的操作系统的个数,它具体指装包出的程序流程个数。

例:装包出去64rabbit.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途径下

下边默认设置指windows自然环境中的装包 如上图所述,每一个文件夹名称下发着相匹配操作系统的dll软件

进到C:\Users\rabbit\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\Plugins途径下

下边默认设置指windows自然环境中的装包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为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!