windows中使用NSIS生成打包文件

当一个项目做好之后,将其打包成安装程序是常见的需要,在windows下我们可以C#来构造打包文件,也可以使用VS中的一些第三方的插件来生成安装程序。而在我的项目GDB实时数据库中,我使用的是NSIS来生成打包程序,下面我将向大家简要的分享一下,如果使用NSIS来制作打包文件,让大家可以在最短的时间内使用NSIS来完成自己的需求。

1.NSIS简介

NSIS创建能够安装,卸载,设置系统设置,提取文件等的安装程序。由于它基于脚本文件,因此您可以完全控制安装程序的每个部分。 脚本语言支持变量,函数和字符串操作,就像普通的编程语言一样,但设计用于创建安装程序。 即使具有所有这些功能,NSIS仍然是可用的最小安装程序系统。 使用默认选项时,其开销仅为34 KB(以上是摘自NSIS官网的介绍),可以看出NSIS的最大特点是开源,并且占用体积小,可扩展性强,但是需要使用特定的脚本语言来编写,多以上手难度也较高。

2.NSIS安装

安装NSIS和简单,只需要去其官网直接下载即可,下载完成之后直接选择安装即可。

3.NSIS脚本语言简介

(1) 注释

在学习任何一门语言之前,首先我们需要知道其注释的格式,NSIS脚本语言的注释可以使用 ; 或者是python格式的#

(2) 变量

对于任何一个语言来说,变量时最基本的,NSIS中的变量使用var关键字来定义,使用的话是$VarName,需要注意的是NSIS中的用户变量都是全局变量,同时在函数内定义变量时必须要加上标识符/GLOABL

Var example  ;定义变量

Function testVar
  Var /GLOBAL example2 ;函数中定义变量需要使用/GLOBAL

  StrCpy $example "example value" ; 使用内置函数StrCpy将example value的值拷贝到exmaple
  StrCpy $example2 "another example value"
FunctionEnd

同时NSIS还提供了很多内置的常量,这些常量对于我们编写程序是有大的帮助的,下面介绍一些常用的,至于更多的内容,大家可以查看官方文档。

$DESKTOP: windows下的桌面文件夹路径

$EXEDIR: 包含可以执行安装程序的文件夹路径

$PROGRAMFILES:The program files文件夹路径

$INSTDIR:程序的安装路径

$SMPROGRAMS: 开始菜单的文件夹路径

(3)函数

NSIS脚本中的函数使用Function进行定义,同时也可以使用回调函数,当需要更高级的定制的时候可以使用函数来完成。NSIS也提供了丰富的内置函数,例如前述的StrCpy,

WriteRegStr:向注册表中写内容

WriteUninstaller:生成uninstaller

CreateDirectory:创建目录

CreateShortcut:创建快捷方式

DeleteRegKey:删除注册表中的key

Delete:删除文件

RMDir: 删除文件夹,需要注意的是不会删除安装目录的文件夹,只会清空

4.NSIS安装程序简介

对于任何一个NSIS安装程序来说,都包含了Page和Section两部分,下面将分别做简要的介绍

(1) Page

NSIS中的Page指定了安装时候显示的页面,  可以使用NSIS内置的页面,也可以使用函数来定制安装时呈现的页面。

(2) Section

section指定了用户可以安装哪些内容,它的书写格式为:

[/o] [([!]|[-])section_name] [section_index_output]
Section "-hidden section"
SectionEnd

需要注意的是如果section的名称是空,省略或者是以-开头,则表示这是一个默认的section,用户没有办法去修改它,即必须安装这个section,在section中我们可以书写函数来定义在安装这一部分时要执行的操作。

5.实战

(1) 需求

对于我的项目gdb的安装包,我需要将应用程序gdb.exe,文件夹ssl下的所有文件以及配置文件config.json进行打包,并且需要创建桌面图标以及在菜单栏添加安装以后的应用程序,同时设置程序开机自启动,以及还需要有卸载程序。如果使用其他的方法完成上述要求可能很麻烦,但是使用NSIS只需要不到几十行代码就搞定。

(2) 代码实战

;nsis of gdb

Name 'gdb' ; 要安装程序的名称
OutFile 'gdbInstaller.exe' ;安装程序的名称

RequestExecutionLevel admin  ;执行安装程序需要的权限

Unicode True  ; 使用Unicode编码进行安装

InstallDir $PROGRAMFILES\GDB  ; 默认的安装路径

InstallDirRegKey HKLM 'Software\GDB' 'Install_Dir' ; 安装程序注册表的key

Icon "gdb.ico"  ; 安装程序的图标

ShowInstDetails show ; 是否显示安装过程的详细信息

ShowUninstDetails show ; 是否显示卸载过程的详细信息

; 下面是添加安装程序的信息
VIAddVersionKey  "ProductName" "gdbInstaller" 
VIAddVersionKey  "Comments" "gdbInstaller Programmer"
VIAddVersionKey  "CompanyName" "Southeast University"
VIAddVersionKey  "LegalCopyright" "Copyright (C) 2020. KeepSilence. All Rights Reserved."
VIAddVersionKey  "FileDescription" "gdbInstaller Programmer"
VIAddVersionKey  "FileVersion" "1.0.0"
VIAddVersionKey "ProductVersion" "1.0.0"

VIProductVersion "1.0.0.0"

VIFileVersion "1.0.0.0"


; 定义安装时候要显示哪些Page

Page components 
Page directory
Page instfiles 

; 定义卸载的时候要显示哪些Page
UninstPage uninstConfirm
UninstPage instfiles


; 安装gdb的section

Section "gdb"
    SectionIn RO
    SetOutPath $INSTDIR
    File /r ssl ; 包含ssl下的所有文件
    File gdb.exe ;包含gdb.exe文件
    File config.json ; 包含配置文件

    WriteRegStr HKLM SOFTWARE\GDB "GDB_Install" "$INSTDIR"  ; Write the installation path into the registry
     ; Write the uninstall keys for Windows
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GDB" "DisplayName"  "gdb"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GDB" "UninstallString" '"$INSTDIR\uninstall.exe"'
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GDB" "NoModify" 1
    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GDB" "NoRepair" 1
    WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd

Section "Start Menu Shortcuts"
    CreateDirectory "$SMPROGRAMS\GDB" ; 创建目录
    CreateShortcut "$SMPROGRAMS\GDB\Uninstall.lnk" "$INSTDIR\uninstall.exe" ; 写入卸载的快捷方式
    CreateShortcut "$SMPROGRAMS\GDB\gdb.lnk" "$INSTDIR\gdb.exe" ; 创建程序的快捷方式
SectionEnd

Section "Desktop ShortCut" 
    CreateShortcut "$DESKTOP\gdb.lnk" "$INSTDIR\gdb.exe" 
SectionEnd

Section "Boot"
    CreateShortcut "$SMPROGRAMS\Startup\gdb.lnk" "$INSTDIR\gdb.exe" ; 设置开始自启动
SectionEnd

Section "Uninstall"
  
  ; Remove registry keys
  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GDB"  
  DeleteRegKey HKLM SOFTWARE\GDB

  ; Remove files and uninstaller
  Delete $INSTDIR\uninstall.exe

  ; Remove shortcuts, if any
  Delete "$SMPROGRAMS\GDB\*.lnk"

  ; Remove directories
  RMDir /r "$SMPROGRAMS\GDB"
  RMDir /r "$INSTDIR"

SectionEnd

再使用命令行,执行

makensis gdb.nsi

即可得到编译后的安装程序gdbInstaller

6. 效果

(1) 程序界面

(2) 安装结果

安装完成之后可以看到windows菜单栏已经出现了GDB文件夹以及对应的程序快捷方式,并且桌面也生成了快捷方式,同时可以看到已经加入到开机自启动

至此,整个安装包的制作过程就全部搞定~~~

关于更多的代码细节,大家可以参考我的github:https://github.com/JustKeepSilence/gdb~~~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值