NSIS:制作软件升级安装包

简介: 原文 NSIS:制作软件升级安装包 相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生。在这种情况下,您可能就需要一个软件的升级安装包了。   现在,我们就来一步步把这个安装包做出来。

原文 NSIS:制作软件升级安装包

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

 
现在,我们就来一步步把这个安装包做出来。
 
前提:用户已经使用我们的完整安装包安装过了,且已经在注册表中记录了安装路径。
 
1 ;在注册表中写入安装路径
2 WriteRegStr HKCU "Software\轻狂的软件" "" $INSTDIR


 
我们要实现以下功能:
1、运行时检测注册表中是否有指定的安装路径,如果有,直接进入安装过程,如果没有,给一个提示。
2、运行时检测程序是否运行,如果正在运行则可以选择强制结束。
3、升级过程中实现解压文件、运行BAT等操作,且有进度条提示。
4、升级结束时打开升级说明以便用户查看。



第一步:定义基本框架

01 /*
02 www.flighty.cn
03 作者:少轻狂
04 时间2012-11-23
05 */
06  
07 !define PRODUCT_NAME "轻狂的软件"
08 !define PRODUCT_VERSION "1.0.0.1"
09  
10 SetCompressor lzma
11 SetFont "tahoma" 8
12 RequestExecutionLevel admin
13  
14 !include "MUI2.nsh"
15  
16 !insertmacro MUI_LANGUAGE "SimpChinese"
17  
18 Name "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}"
19 OutFile "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}.exe"
20 InstallDirRegKey HKCU "Software\轻狂的软件" ""
21  
22 Section "升级文件" SEC01
23  
24   SetDetailsPrint textonly
25   DetailPrint "正在升级 ${PRODUCT_NAME},请单击关闭按钮完成升级!"
26   SetDetailsPrint listonly
27  
28   SectionIn RO
29   SetOutPath "$INSTDIR"
30   SetOverwrite ifnewer
31   ;升级文件
32   File "Server\轻狂的软件.EXE"
33   File "Server\轻狂的软件.bat"
34   File "Server\更新说明.txt"
35   ;运行BTA
36   nsExec::Exec "$INSTDIR\轻狂的软件.bat"
37   ;指定以记事本打开说明
38   Exec '"$SYSDIR\notepad.exe" "$INSTDIR\更新说明.txt"'
39  
40 SectionEnd
 
如果没有其他错误,这时候我们的升级程序就已经可以编译了。
 
下面,我们继续进行完善。
 


二步:禁止重复运行

在.onInit区段加入以下代码
 
1 InitPluginsDir
2   ;创建互斥防止重复运行
3   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "轻狂的软件_installer") i .r1 ?e'
4   Pop $R0
5   StrCmp $R0 0 +3
6     MessageBox MB_OK|MB_ICONEXCLAMATION "有一个 ${PRODUCT_NAME} 升级程序已经运行!"
7     Abort
 


第三步:加入是否安装判断
 
我们通过检测注册中指定键值的方式来判断软件是否已经正确安装。
 
在.onInit区段加入以下代码
 
1 ;判断是否已安装
2 ReadRegStr $0 HKCU "Software\轻狂的软件" ""
3 StrCmp $0 "" 0 NoAbort
4   MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装轻狂的软件,不能使用此升级程序!"
5   Abort ;退出安装程序
6 NoAbort:
 


第四步:如果程序正在运行则关闭程序
 
在.onInit区段加入以下代码
 
01 ;关闭进程
02 Push $R0
03 CheckProc:
04   Push "轻狂的软件.exe"
05   ProcessWork::existsprocess
06   Pop $R0
07   IntCmp $R0 0 Done
08   MessageBox MB_OKCANCEL|MB_ICONSTOP "升级程序检测到 ${PRODUCT_NAME} 正在运行。$\r$\n$\r$\n点击 “确定” 强制关闭${PRODUCT_NAME},继续升级。$\r$\n点击 “取消” 退出安装程序。" IDCANCEL Exit
09   Push "轻狂的软件.exe"
10   Processwork::KillProcess
11   Sleep 1000
12   Goto CheckProc
13   Exit:
14   Abort
15   Done:
16   Pop $R0
 
这时我们会发现整个安装程序还不是很美观,那么我们继续。
 


第五步:添加页眉图片和图标
 
1 !define MUI_ABORTWARNING
2 !define MUI_HEADERIMAGE
3 !define MUI_ICON "Setup\logo.ico"
4 !define MUI_HEADERIMAGE_BITMAP "Setup\modern-header.bmp"
 
好,至此,这个软件升级包就大功告成了。
 
当然,你还可以在其中加入其他功能,比如更新卸载文件代码、注册DLL、设置壁纸、更改主题等,不过,轻狂劝你:这只是一个升级安装包而已,没必要搞得功能那么复杂吧!呵呵

 

目录
相关文章
|
8月前
安装包制作
安装包制作
Photoshop软件2021版本下载安装教程——全版本软件下载安装包获取
Photoshop软件2021版本下载安装教程——全版本软件下载安装包获取
547 0
|
安全 Windows
分享5款安全无毒,下载简单的小软件
今天推荐一些安全无毒,下载简单,最重要的是没有广告的软件!
238 0
分享5款安全无毒,下载简单的小软件
下载、安装MicroStation软件、Terrasolid插件
本文介绍在Win10电脑中,安装MicroStation软件与Terrasolid插件合集的详细方法~
757 1
下载、安装MicroStation软件、Terrasolid插件
|
存储 数据库 图形学
CorelDRAW2023版软件汉化补丁包下载CDR23专业矢量软件
CorelDRAW2023中文版是专业矢量软件中的最老牌大哥,功能强大没说的,此外它还集成了Corel PHOTO-PAINT、Corel Font Manager等在内的7个软件包。而且对比于illustrator和freehand,CorelDRAW更为简单易上手设计工具,具有行业标准文件兼容性,支持.DWG、.STL、.PDF和.CDR,具有省时协作和项目共享、自动化和自定义选项等优势,你可以自由的进行绘图环境的设置,可以应用单位、图形边界、网格和捕捉设置,并将这些设置存储在样板图形中。cdr2023下载:http://t.csdn.cn/t8wDL
975 18
水果软件FLStudio2023最新完整版本安装包下载
FL Studio是一款音乐编曲软件,全称:Fruity Loops Studio,也是我们经常说的水果音乐软件,该软件功能强大,让你拥有全功能的录音室、大混音盘、让你的音乐突破你的想象力。但是很多人不了解这款软件,不知道从何学起,下面就给大家介绍FL Studio21软件入门教程。FL Studio 简称为FL,全称:Fruity Loops Studio,因此它又有"水果"之称。 就在最近,FL Studio下载:http://t.csdn.cn/3irxK
326 3
|
安全 数据安全/隐私保护
目前CleanMyMac软件最新版在哪里下载?
目前CleanMyMac软件最新的版本为4.11.4,CleanMyMac就是一款Mac系统清理软件,支持垃圾清理、隐私保护、恶意软件移除、文件清理、应用卸载,功能齐全的同时,软件设置也支持各种自定义。下面小编就利用CLeanMyMac X版本,详解一些这款软件的通用设置,从软件设置的角度,带大家全面的了解以及更好地掌握这一款Mac软件。很多小伙伴说只会用而不会安装软件,以及CleanMyMac的安装下载图解。
86 0
|
C#
【C#】VS2012+InstallShield2013制作软件更新包
原文:【C#】VS2012+InstallShield2013制作软件更新包 上篇文章介绍了如何使用installshield制作软件的安装包,见地址:http://blog.csdn.net/catshitone/article/details/41700115 这次来介绍一下,当软件有更新时,如何制作一个更新包,自动删除旧软件,安装新软件。
1123 0