NSIS制作软件升级安装包完整教程

所属分类: 软件教程 / 其他工具 阅读数: 1999
收藏 0 赞 0 分享

NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个免费的 Win32 安装、卸载系统,采用了简洁高效的脚本方式。它本来是一个由 Nullsoft 创建并用于作为 Winamp 及其插件发布的系统,但现已被上百个应用程序所应用,作为它们进行程序发布的工具。

相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生。在这种情况下,您可能就需要一个软件的升级安装包了。

现在,我们就来一步步把这个安装包做出来。

NSIS下载地址www.jb51.net/softs/33520.html
前提:用户已经使用我们的完整安装包安装过了,且已经在注册表中记录了安装路径。

在注册表中写入安装路径WriteRegStr HKCU "Software\无名智者作品系列" "" $INSTDIR

我们要实现以下功能:

1、运行时检测注册表中是否有指定的安装路径,如果有,直接进入安装过程,如果没有,给一个提示。

2、运行时检测程序是否运行,如果正在运行则可以选择强制结束。

3、升级过程中实现解压文件、运行BAT等操作,且有进度条提示。

4、升级结束时打开升级说明以便用户查看。

第一步:定义基本框架

"!define PRODUCT_NAME "a"!define PRODUCT_VERSION "1.0.0.1" SetCompressor lzmaSetFont "tahoma" 8RequestExecutionLevel admin !include "MUI2.nsh" !insertmacro MUI_LANGUAGE "SimpChinese" Name "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}"OutFile "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}.exe"InstallDirRegKey HKCU "Software\a" "" Section "升级文件" SEC01 SetDetailsPrint textonly DetailPrint "正在升级 ${PRODUCT_NAME},请单击关闭按钮完成升级!" SetDetailsPrint listonly SectionIn RO SetOutPath "$INSTDIR"SetOverwrite ifnewer ;升级文件File "a.EXE" File "Server\更新说明.txt" ;运行BTA nsExec::Exec "$INSTDIR\a.bat" ;指定以记事本打开说明 Exec '"$SYSDIR\notepad.exe" "$INSTDIR\更新说明.txt"' SectionEnd

如果没有其他错误,这时候我们的升级程序就已经可以编译了。

下面,我们继续进行完善。

第二步:禁止重复运行

在.onInit区段加入以下代码

InitPluginsDir ;创建互斥防止重复运行 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "ainstaller") i .r1 ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION "有一个 ${PRODUCT_NAME} 升级程序已经运行!" Abort

第三步:加入是否安装判断

我们通过检测注册中指定键值的方式来判断软件是否已经正确安装。

在.onInit区段加入以下代码

 ;判断是否已安装 ReadRegStr $0 HKCU "Software\a" "" StrCmp $0 "" 0 NoAbort MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装本软件,不能使用此升级程序!" Abort ;退出安装程序 NoAbort:

第四步:如果程序正在运行则关闭程序

在.onInit区段加入以下代码

 ;关闭进程 Push $R0 CheckProc: Push "asc.exe" ProcessWork::existsprocess Pop $R0 IntCmp $R0 0 Done MessageBox MB_OKCANCEL|MB_ICONSTOP "升级程序检测到 ${PRODUCT_NAME} 正在运行。$\r$\n$\r$\n点击 “确定” 强制关闭${PRODUCT_NAME},继续升级。$\r$\n点击 “取消” 退出安装程序。" IDCANCEL Exit Push "asc.exe" Processwork::KillProcess Sleep 1000 Goto CheckProc Exit: Abort Done: Pop $R0

这时我们会发现整个安装程序还不是很美观,那么我们继续。

第五步:添加MUI

MUI,你懂的!

好,至此,这个软件升级包就大功告成了。

当然,你还可以在其中加入其他功能,比如更新卸载文件代码、注册DLL、设置壁纸、更改主题等,不过,轻狂劝你:这只是一个升级安装包而已,没必要搞得功能那么复杂吧!呵呵

更多精彩内容其他人还在看

Axure RP 8怎么给下拉列表框添加多个值?

Axure RP 8怎么给下拉列表框添加多个值?Axure RP 8中想要制作一个下拉列表,有多个数值,该怎么制作呢?下面我们就来Axure给下拉列表框添加多行值的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Axure RP 8怎么制作圆形不断变换透明度的效果?

Axure RP 8怎么制作圆形不断变换透明度的效果?Axure RP 8中想要绘制五个大小不同的圆形,中间的圆形可以控制周围圆形的与透明度,该怎么谁及呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

蓝信沃卡是什么?联想蓝信沃卡资费详情介绍

中国联通占据市场效率非常之快,先后被腾讯大王卡和蚂蚁宝卡刷屏,而如今中国联通开启了全新的重大举措,与企业移动办公平台蓝信合作推出“蓝信沃卡”抢占企业用户市场。那么联通蓝信沃卡是什么?蓝信沃卡资费是怎么样的呢?本文将提供联想蓝信沃卡资费详情介绍
收藏 0 赞 0 分享

微信小程序可以分享到朋友圈吗 微信小程序支不支持分享朋友圈

微信小程序可以分享到朋友圈吗?很多朋友都在咨询微信小程序支不支持分享朋友圈,那么微信小程序可以分享到朋友圈吗,接下来小编给大家介绍究竟微信小程序支不支持分享朋友圈
收藏 0 赞 0 分享

Axure RP 8怎么利用按钮控制单选框和复选框?

Axure RP 8怎么利用按钮控制单选框和复选框?Axure中想要设计一个通过按钮来空值单选框和复选框的原型,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Axure RP 8设怎么绘制拱桥倒影图?

Axure RP 8设怎么绘制拱桥倒影图?想要制作一个圆拱桥并且设置倒影相互映衬,该怎么绘制呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

超牛卡是什么卡?电信超牛卡套餐资费详情介绍

中国联通和腾讯、支付宝联合相继推出了腾讯王卡和蚂蚁宝卡,这些优惠专属卡引起了移动和电信的高度重视,而最近发现电信推出的“超牛卡”,资费还是很划算的。那么超牛卡是什么卡?超牛卡有什么套餐资费?下面脚本之家的小编带来超牛卡套餐资费详情介绍,一起来了解下吧
收藏 0 赞 0 分享

Axure怎么设计网页的登陆页面?

Axure怎么设计网页的登陆页面?Axure中想要设计一个网页的登陆界面,输入用户名密码,该怎么设置呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

微信小程序怎么申请注册 微信小程序官方注册图文流程

微信小程序怎么申请注册?2017年1月9日,微信小程序正式与大家见面。有部分朋友不清楚怎么申请注册,接下来小编给大家带来微信小程序官方注册流程,需要的朋友可以参考下
收藏 0 赞 0 分享

微信小程序登录入口在哪? 如何发现新的小程序?

微信小程序在哪里登录?如何发现新的小程序?微信小程序于今日正式上线,用户先需要将将微信更新至iOS6.5.3版本或Android6.5.3版本。之后可通过手动搜索小程序、扫描二维码等方式激活,那么微信小程序怎么登陆呢?又怎么发现更多的小程序
收藏 0 赞 0 分享
查看更多