NSIS打包程序安装包教程,包括设置程序后台启动,开机自启动,安装卸载杀死进程以及带注册码、安装许可证协议以及个性化设置等功能(新增exec族调用win api/bat)

一 NSIS工具的使用

  1. 启动NIS Edit。
    在这里插入图片描述
  2. 在“文件”菜单中“新建脚本:向导”=>下一步”。
    在这里插入图片描述
  3. 设置应用程序信息,如软件名称、版本、出版人等,当然最一个网站可以留空,如果设置了,则安装包会生成一个对应网址的“Internet 快捷方式”。
    在这里插入图片描述
  4. 设置程序选项,如安装包图标、安装程序文件、安装包语言[这里选“SimpChinese”]、用户图形界面及压缩方式等,可以选用默认值,也可以点击对应项目的按钮或下拉菜单更改设置。
    在这里插入图片描述
  5. 设置安装目录及授权信息,然后后“下一步”,其中授权文件可不填写,如果你需要对你打包的软件提供用户使用文档,可自行创建文件然后将文件目录填入。
    在这里插入图片描述
  6. 选定程序文件,即我们要打包的文件,可以使用默认的“Mainsection”,也可以根据需要进行更改或新建组别,如果组比较多时,你也可以设置是否“允许用户选择要安装的组件”。
    在这里插入图片描述
  7. 完毕后进行“添加文件”操作,选定我们要打包的文件,点击确定,然后执行下一步操作。
    在这里插入图片描述
  8. 设置开始菜单中文件夹名称及快捷方式,一般使用默认值, 然后“下一步”。
    在这里插入图片描述
  9. 指定安装后要运行的程序,同上用默认值并设置相关运行参数及描述,或不想在安装运行任何程序,则留空即可。
    在这里插入图片描述
  10. .这步是有关卸载程序的相关信息,如卸载时的提示、卸载的图标等。
    在这里插入图片描述
  11. 点击下一步后,跳到完成向导界面,勾选“保存脚本”和“转换文件路径到相关路径”。
    在这里插入图片描述
  12. 点击完成后,自定义保存路径和保存文件名。
    在这里插入图片描述
    13.找到保存的文件,双击打开。
    在这里插入图片描述
    14.打开以后,点击编译运行,生成可执行文件。

在这里插入图片描述

二 后台运行操作

在如图位置加入如下代码设置对XXX.exe后台运行操作

在这里插入图片描述

Function .onInstSuccess
  ExecShell "open" "$INSTDIR\ICCKey.exe"
  ExecShell "open" "$INSTDIR\PkiApiService.exe"
FunctionEnd

三 卸载结束后台进程操作

首先执行结束后台进程需要确保NSIS安装目录下的Plugins目录下存在下图两个库。
在这里插入图片描述
然后在卸载函数里添加下图代码。
在这里插入图片描述

  ;删除进程
  FindProcDLL::FindProc "ICCKey.exe"
  Push "icckey.exe"
  KillProcDLL::KillProc

  FindProcDLL::FindProc "PkiApiService.exe"
  Push "PkiApiService.exe"
  KillProcDLL::KillProc

第二种卸载程序或者安装程序时杀死进程的方法(可以一次性杀死多个进程)

NSIS使用exec调用windows指令去杀死进程,好处在于可以杀死多个进程,十分方便。

nsExec::Exec "taskkill /im ICCKey.exe /f"

安装时杀死进程:
在这里插入图片描述
卸载时杀死进程:
在这里插入图片描述
在卸载的时候,加上RMDir /r “$INSTDIR”,可以卸载整个安装目录。

 RMDir /r "$INSTDIR"

关于exec在NSIS中的使用

ExecWait 调用BAT

BAT不带参数时:

SetOutPath '$INSTDIR' ExecWait '$INSTDIR/A.bat'

BAT需要参数时,要把带参数的命令写入另外一个新的BAT中,执行新BAT(B.bat)
新BAT(B.bat):

CALL A.bat install 

NSIS 脚本:

SetOutPath '$INSTDIR' ExecWait '$INSTDIR/B.bat'

ExecShell

等同 Windows API ShellExecute
C 代码:

ShellExecute(NULL, "open", "file.txt", "/x", "D:\docs", SW_SHOW);

NSIS 脚本:

SetOutPath D:\docs
ExecShell open file.txt /x SW_SHOW

ExecCmd

ExecCmd::exec [/NOUNLOAD /ASYNC] [/TEST] [/TIMEOUT=xxx] application_to_run stdin_string

执行控制台应用程序。
异步
不等待进程退出。如果您想获得退出代码,请使用“等待”呼叫。(/NOUNLOAD是强制性的!)

四 开机自启动操作

对于制作好的安装包,有些时候可能需要在安装完成界面上添加一个可勾选的开机自启动的选项,下面是具体的细节。
1.在安装完成界面设置添加如下代码,务必要添加在 " !insertmacro MUIPAGEFINISH "之前。

在这里插入图片描述

!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_Function AutoBoot
!define MUI_FINISHPAGE_SHOWREADME_TEXT "开机自动启动"
!insertmacro MUI_PAGE_FINISH

2.在Section后区段的后面添加Function部分(在Section之后,是为了避免产生未知的错误)把上面的PKI5.0替换成你要打包程序名就行了,主要是把信息写入系统注册表,代码如下:
在这里插入图片描述

Function AutoBoot
    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "ICCKey"'"$INSTDIR\ICCKey.exe"'
    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "PkiApiService"'"$INSTDIR\PkiApiService.exe"'
FunctionEnd

3.前两步已经可以实现开机自启动了。这最后一步,需要在卸载和初始化区段里面把注册表信息删除。原因是让用户在卸载程序和覆盖安装程序后,不会受到刚开始安装程序的写入系统注册表的影响。 在Function .onInit里面添加如下代码:
;删除开机自启

在这里插入图片描述

Function un.onInit
  DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\ICCKey"
  DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\PkiApiService"
!insertmacro MUI_UNGETLANGUAGE
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
  Abort
FunctionEnd

在Section Uninstall里面添加如下代码:
;删除开机自启

在这里插入图片描述

  DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\ICCKey"
  DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\PkiApiService"

五 带注册码

使用时需要借助一个PassDialog.dll这个插件去做注册码生成输入框。
然后编写如图代码。
在这里插入图片描述

;安装密码
!define Password "123"
;密码输入页面
Page Custom PasswordPageShow PasswordPageLeave

在这里插入图片描述

Function PasswordPageShow
 !insertmacro MUI_HEADER_TEXT "输入密码" "安装程序需要一个正确的安装密码才能继续。"
 PassDialog::InitDialog /NOUNLOAD Password /HEADINGTEXT "请输入密码。" /GROUPTEXT "密码输入框"
 Pop $R0 # Page HWND
 SendMessage $R1 ${EM_SETPASSWORDCHAR} 178 0
 PassDialog::Show
FunctionEnd
;验证密码
Function PasswordPageLeave
 ;从堆栈取出密码
 Pop $R0
 ;密码错误
 StrCmp $R0 '${Password}' +3
  MessageBox MB_OK|MB_ICONEXCLAMATION "密码输入错误!请输入正确的安装密码!"
  Abort
 ;密码正确
  MessageBox MB_OK|MB_ICONEXCLAMATION "密码正确!"
  ;Abort
FunctionEnd

六 安装许可证协议

在这里插入图片描述
NSIS代码部分:

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "..\安装条款.txt"
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\ICCKey.exe"
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

在这里插入图片描述

七 个性化设置

1.修改logo以及内侧图(左边图片)

!define MUI_ABORTWARNING
!define MUI_ICON "..\vv_setupicon.ico"
!define MUI_UNICON "..\vv_setupicon.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "..\setbg.bmp"

此处需要注意的是:内侧图一定要是windows标准格式BMP图片,可以用windows自带的画图软件将其他格式的图片转成BMP格式,内图大小为164×314,可以根据这个比例放大。

2.安装包标题及介绍

//标题
!define MUI_WELCOMEPAGE_TITLE "\r\n   LOL安装示例向导"
//文字介绍
!define MUI_WELCOMEPAGE_TEXT "这个向导将指引你完成LOL的安装进程。\r\n\r\n在开始安装之前,建议先关闭其他相关所有应用程序,这将允许“安装程序“更新指定的系统文件。\r\n\r\n为保证程序的正常安装和运行,若您的电脑遇到弹窗提醒,请允许程序所有操作。\r\n\r\n$_CLICK"

NSIS打包工具下载地址

  • 19
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

离歌漠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值