简单使用NSIS打包软件

本文介绍了NSIS,一个开源的打包工具,用于编写Windows安装程序。作者分享了如何使用NSIS编写脚本检查服务安装情况并安装插件,包括定义全局变量、初始化函数、设置安装路径和模块等内容。
摘要由CSDN通过智能技术生成

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
  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单NSIS 脚本,用于打包一个名为 MySoftware 的软件: ``` ; Script generated by the HM NIS Edit Script Wizard. ; Define the name and the output file of the installer Name "MySoftware" OutFile "MySoftwareInstaller.exe" ; Define the default installation directory InstallDir "$PROGRAMFILES\MySoftware" ; Define the components to be installed ComponentGroup "Main" Component "MySoftware" Component "Start Menu Shortcut" ; Define the files to be installed Section "MySoftware" Section1 SetOutPath "$INSTDIR" File "MySoftware.exe" File "README.txt" SectionEnd ; Define the Start Menu shortcut Section "Start Menu Shortcut" Section2 CreateDirectory "$SMPROGRAMS\MySoftware" CreateShortCut "$SMPROGRAMS\MySoftware\MySoftware.lnk" "$INSTDIR\MySoftware.exe" "" "" 0 SectionEnd ; Define the uninstaller Section "Uninstall" Delete "$INSTDIR\MySoftware.exe" Delete "$INSTDIR\README.txt" Delete "$SMPROGRAMS\MySoftware\MySoftware.lnk" RMDir "$SMPROGRAMS\MySoftware" RMDir "$INSTDIR" SectionEnd ; Define the installer sections SectionGroup /e "Install" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES SectionGroupEnd SectionGroup /e "Uninstall" !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES SectionGroupEnd ; Define the installer attributes !define MUI_COMPONENTSPAGE_SMALLDESC !define MUI_UNICON "uninstall.ico" !define MUI_ICON "installer.ico" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "English" ``` 这个脚本将 MySoftware.exe 和 README.txt 安装到 $PROGRAMFILES\MySoftware 目录下,并创建一个“开始菜单”快捷方式。当用户卸载软件时,脚本将删除这些文件和快捷方式。除此之外,脚本还定义了安装程序的界面和属性。请注意,这只是一个简单的示例脚本,您可以根据自己的需要进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波雅_汉库克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值