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