NSIS制作安装包

NSIS是一款免费的制作windows安装包的工具,功能灵活强大。

关于NSIS基础的安装,语法结构,请自行百度,本文仅针对于一些比较特别的功能做一些备忘记录。

1. 多语言的支持

此处仅介绍按照最新版的 NSIS 3.0 版本,使用 ModernUI 载入多语言

!include "MUI2.nsh"  ; 仅有2支持

; 语言选择窗口常量设置
; 在注册表中记录安装时选择的语言,卸载时就可以不再选择语言,直接显示对应语言的卸载程序
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

; 证书页,不同语言载入不同的 license 文件
LicenseLangString License 1033 "license-english.txt"
LicenseLangString License 2052 "license-chinese.txt"
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE $(License)

; 列出支持语言
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"
; 无论如何,安装时都显示选择语言的选项
!insertmacro MUI_RESERVEFILE_LANGDLL

; 多语言文本定义
LangString ModuleMain ${LANG_SIMPCHINESE} "主程序"
LangString ModuleMain ${LANG_ENGLISH} "esreader main"
。
。
。

; .onInit 函数中引入显示语言选择框
Function .onInit
  ; 显示语言选项
  !insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

; 使用多语言文本定义的变量,注意是 $() 而不是 ${}
Section "$(ModuleMain)" SEC01
。
。
。
SectionEnd

; 卸载时,在 un.onInit 函数载入注册表中记录的语言
Function un.onInit
  !insertmacro MUI_UNGETLANGUAGE
FunctionEnd

其中需要特别注意的是,.onInit 以及 un.onInit 函数是在安装/卸载程序的UI出现之前就加载的,LangString 的定义是在UI出现之后,所以在 .onInit/un.onInit 中使用 LangString 不会生效

2. 自定义数据存储目录

。。。
; 选择安装目录页面
!insertmacro MUI_PAGE_DIRECTORY
; 自定义数据存储位置选择页面
Page custom chooseDataDirPage
。。。

; 选择文件存储位置页面
Function chooseDataDirPage
  ; 注册表中不存在安装位置,表示全新安装
  ; 如果是覆盖安装,则不需要选择数据存储目录,防止软件数据出问题
  ${If} $installPosition == ""
    ; 设置 dataDir 的默认值为 C:\akdata
    StrCpy $dataDir "C:\akdata"
    !insertmacro MUI_HEADER_TEXT "$(ChooseFileHeader1)" "$(ChooseFileHeader2)"
    nsDialogs::Create /NOUNLOAD 1018
    Pop $chooseDirDialog

    ${If} $chooseDirDialog == error
      Abort
    ${EndIf}

    ${NSD_CreateDirRequest} 0 23u 225u 12u "$dataDir"
    Pop $chooseDirDialog
    ${NSD_OnChange} $chooseDirDialog changeDir

    ${NSD_CreateBrowseButton} 235u 23u 45u 15u "$(ChooseFileBtn)"
    Pop $chooseDirBtn
    ${NSD_OnClick} $chooseDirBtn showDialog

    nsDialogs::Show
  ${EndIf}
FunctionEnd

; 目录改变时,将当前位置写入变量 dataDir
Function changeDir
  ${NSD_GetText} $chooseDirDialog $dataDir
FunctionEnd

; 显示文件选择对话框
Function showDialog
  nsDialogs::SelectFolderDialog /NOUNLOAD "$(ChooseFileHeader2)" ""
  Pop $dataDir
  ${If} $dataDir != error
    ${NSD_SetText} $chooseDirDialog $dataDir
  ${EndIf}
FunctionEnd

3. 安装包的一些基本信息

此处配置主要是为了修改生成的安装包的如下信息:

; 定义安装文件信息
VIProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} FileDescription "${PRODUCT_NAME}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} FileVersion "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} ProductName "${PRODUCT_NAME}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} ProductVersion "${version}"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} LegalCopyright "Copyright(C) XXX. All rights reserved"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} CompanyName "${PRODUCT_PUBLISHER}"

 

4. 配合读取项目版本,作为安装包的版本

这里以读取比如 nodejs 项目中的 package.json 文件的版本号为例,需要先写一个 bat 或者 sh 脚本,从 package.json 文件中读取 version 字段,并且写入到 version.txt 文件中

@echo off
REM 获取版本号

for /f "tokens=1,2* delims=," %%a in (package.json) do (
    echo %%a | findstr "version" >nul && set VERSION=%%a
)
echo !define version "%VERSION:~-6,5%" > version.txt

version.txt 文件中写入的内容是:

!define version "0.0.7" 

然后,在 NSIS 脚本中,调用脚本,并且载入 version.txt 文件并使用 version 变量

!system "get-version.bat"
!include "version.txt"


; 使用 version 字段,就如同变量一样,用 ${version} 即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NSIS(Nullsoft Scriptable Install System)是一种开源的脚本安装制作工具,可以用于创建Windows操作系统上的安装程序。NSIS提供了内置的模板和命令,可以根据需求进行定制和美化安装包模板。 为了美化NSIS安装包模板,我们可以进行以下操作: 1. 自定义界面:NSIS提供了内置的默认界面,但我们可以根据需要自定义界面。可以修改窗口样式、字体、颜色等,以及添加自定义的图片和图标。这样可以使安装包更加专业和吸引人。 2. 设计安装向导:安装向导是用户在安装过程中导航的重要界面。我们可以自定义安装向导的页面顺序、文本内容和按钮的样式。通过设计精美的安装向导,可以提升用户体验。 3. 添加自定义脚本:NSIS使用自定义的脚本语言来编写安装程序。我们可以添加自定义的脚本,实现一些复杂的逻辑和功能。例如,可以在安装过程中检测系统环境、设置注册表、创建快捷方式等。 4. 压缩和解压缩文件:NSIS支持对文件进行压缩和解压缩。我们可以选择不同的压缩算法和选项,以便在安装包中包含更多的文件,并确保安装程序的大小和执行效率。 5. 加入自动更新:NSIS还支持自动更新功能。我们可以加入自动更新模块,使得用户可以方便地获取最新版本的安装包,并进行自动覆盖安装。 总之,通过对NSIS安装包模板进行美化和定制,我们可以创建出具有个性化和专业化特点的安装程序。这不仅可以提升用户体验,还会提高软件的品牌形象和推广效果。 ### 回答2: NSIS(Nullsoft Scriptable Install System)是一种开源的脚本驱动的安装/解压缩系统,它允许开发者创建自定义的安装程序。美化安装包模板指的是对NSIS安装包界面进行个性化设计,以提升用户体验。 首先,美化安装包模板可以通过自定义背景、图标、颜色和字体来提升安装程序的美观度。通过选择适当的背景图片和配色方案,可以为用户营造一个舒适和专业的界面。 其次,美化安装包模板可以改善用户的交互体验。通过添加动画效果、过渡效果和交互式元素,可以使用户在安装过程中感到更加舒心和投入。例如,可以在安装进度条上添加动态效果,让用户直观地了解安装的进展情况。 还有,美化安装包模板还可以增加品牌形象的展示。开发者可以加入自己的品牌标志、公司信息和其他形象元素,以提升品牌的知名度和认可度。 此外,美化安装包模板还可以提供更多的自定义选项,以满足用户的个性化需求。通过添加选项勾选框或下拉菜单,用户可以根据自己的喜好选择是否安装某些组件或功能。 总之,美化安装包模板是通过个性化设计和增加交互元素,提升NSIS安装程序的外观和用户体验的方法。通过美化安装包模板,开发者可以为用户提供一个更加吸引人、专业和方便的安装过程。 ### 回答3: NSIS(Nullsoft Scriptable Install System)是一个开源的安装包制作工具,可以用来制作Windows环境下的安装程序。美化安装包模板是指对NSIS生成的默认安装界面进行个性化定制,使其更符合软件产品的品牌形象和用户界面设计要求。 NSIS提供了一系列的默认界面模板,包括经典的Installer等等,但这些默认模板一般比较简单,无法满足一些特殊的设计需求,因此需要对安装界面进行美化定制。 美化安装包模板的主要步骤如下: 1. 设计安装界面布局:根据软件产品的界面设计风格,确定安装界面的整体布局,包括窗口的尺寸、背景色、图标、标题、按钮等元素。 2. 自定义背景图和图标:可以使用自定义的背景图片作为安装界面的背景,提升整体美观度;同样,可以使用自定义图标替换默认的图标,突出软件品牌形象。 3. 修改字体和颜色:根据软件界面设计规范,选择合适的字体和颜色,使安装界面的文字信息更易读、更符合软件产品的风格。 4. 添加自定义按钮和界面元素:根据具体需求,可以添加一些自定义按钮和界面元素,比如“继续”、“退出”按钮,或者安装进度条,以提升用户体验。 5. 错误处理和展示:在安装过程中,可能会遇到一些错误情况,可以根据具体需求预先设计好错误处理和展示界面,如错误提示框等。 通过美化安装包模板,可以使得最终生成的安装程序更具视觉吸引力,与软件产品的UI风格保持一致,提升用户的安装体验。同时,也可以在安装过程中添加一些个性化的功能,满足特定的需求。总之,美化安装包模板是NSIS制作安装程序的重要环节,它可以为软件产品增添更多的价值和个性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值