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

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

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

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

NSIS下载地址:www./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、设置壁纸、更改主题等,不过,轻狂劝你:这只是一个升级安装包而已,没必要搞得功能那么复杂吧!呵呵

(0)

相关推荐

  • 电脑上如何打开软件的安装包

    有的小伙伴在使用电脑时,想要编辑某个软件的安装包,但是却不知道如何打开软件的安装包,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,开机电脑,接着右击想要打开安装包的软件.2.第二步,来到下图所 ...

  • 如何用手机上的应用宝软件将安装包删除

    我们在使用安卓手机的时候,下载的软件,都会有安装包,想要删除安装包,该怎么操作呢?今天就跟大家介绍一下如何用手机上的应用宝软件将安装包删除的具体操作步骤.1. 首先打开手机上的应用宝,进入主页面后,点 ...

  • 如何快速删除华为手机中软件的安装包

    有的小伙伴在使用华为手机时,发现手机中的安装包占用了大量内存,因此想要快速删除软件的安装包,但是却不知道如何删除,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,点击并打开文件管理软件.2. 第 ...

  • 如何在oppo手机中解决下载软件收到安装包已损坏的提示

    有的小伙伴在使用oppo手机时,想要下载第三方应用程序,但是却收到安装包已损坏的提示信息,那么如何解决这一问题呢?小编就来为大家介绍一下吧.具体如下:1. 第一步,点击并打开设置应用.2. 第二步,来 ...

  • iphone苹果手机中的升级安装包怎么删除

    我们在使用iPhone手机的时候,其中的升级安装包一般都会在手机中保存,想要删除节省手机空间,该怎么操作呢?今天就跟大家介绍一下iphone苹果手机中的升级安装包怎么删除的具体操作步骤.1. 首先解锁 ...

  • 如何找到电脑上软件的安装包

    如何找到电脑上软件的安装包?有很多小伙伴或许为此感到疑惑,下面小编为你介绍下具体的解决方法,希望可以帮助到你. 操作方法 01 右键单击软件,点击"属性"选项. 02 打开属性界面 ...

  • 怎么找到电脑上软件的安装包?

    怎么找到电脑上软件的安装包呢?小编这里带大家了解一下. 操作方法 01 打开桌面,选择要找到安装包的程序,比如我们要找英雄联盟. 02 右键,点击打开文件所在的文件夹,系统会自动跳出资源管理器. 03 ...

  • CHM制作软件(Precision Helper)使用图文教程

    网上搜索CHM制作软件结果繁多,但真正好用的并不多,能称为优秀的只剩下几款。其中我觉得优秀又免费的只有 Precision Helper,称得上最佳免费 CHM 制作软件。帮助创作工具,它的重点是现有 ...

  • 如何制作windows服务安装包? 服务安装包的制作过程

    Window服务的安装有两个方式: 一、命令安装 通过命令窗口,执行 InstallUtil.exe 服务路径 可安装Window服务,你是不是觉得我在扯,这么长的命令怎么看?怎么记住?可以想想如果客 ...