[NSIS] 用NSIS做一个软件升级安装包

《NSIS使用心得 I》这篇中简要介绍了一下NSIS的脚本编写,通过文章中的介绍相信各位高手很快就做了一个有特色的程序安装包了。但相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生。在这种情况下,您可能就需要一个程序的升级安装包了。

下面介绍一个简单的升级安装包的制作。(如果有更好的升级方法,希望各位高手能发表评论,我也好学习学习)

/* ----------------------------------------------------------------------*/
!define PRODUCT_NAME "产品名称"
!define PRODUCT_VERSION "产品版本号"
!define PRODUCT_PUBLISHER "产品发布者"
!define PRODUCT_DIR_REGKEY "Software/Microsoft/Windows/CurrentVersion/App Paths/产品.exe"
!define PRODUCT_UNINST_KEY "Software/Microsoft/Windwos/CurrentVersion/Uninstall/${PRODUCT_NAME}"

SetCompressor lzma

!include "MUI.nsh"
!include "StrFunc.nsh"
!include "Library.nsh"

!define MUI_ABORTWARING
!define MUI_ICON "../ICON/install.ico" #安装包图标

!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT
!define MUI_HEADERIMAGE_BITMAP "../ICON/LOGO.bmp" #软件公司、个性图片

!define MUI_WELCOMEPAGE_TITLE "欢迎使用“产品名称”安装向导"
!define MUI_WELCOMEPAGE_TEXT "/r/n这个安装向导将指引你完成“产品名称”的升级安装过程。/r/n/r/n开始安装前,建议先关闭其他所有应用程序。这将允许“升级程序”更新指定的系统软件,而不需要重新启动计算机。/r/n/r/n$_CLICK"

!insertmacro MUI_PAGE_WELCOME

!define MUI_LICENSEPAGE_TEXT_TOP "阅读协议的其余部分,请按向下滚动页面。"
!define MUI_LICENSEPAGE_TEXT_BOTTOM "如果您同意协议中的条款,请选择“接受协议中的条款”并$_CLICK"
!define MUI_LICENSEPAGE_RADIOBUTTONS
!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT "接受协议中的条款"
!define MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "不接受协议中的条款"

!insertmacro MUI_PAGE_LICENSE "../License.txt"

!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "SimpChinese"

Name "产品名称"
OutFile "upgrade.exe"
InstallDir "$PROGRAMFILES/产品名称"
InstallDirRegKey HKCU "Software/产品名称" "" #读取上篇文章中写入注册表中的程序安装路径信息
ShowInstDetails nevershow
ShowUninstDetails nevershow
BrandingText "NSIS" #安装界面左下角显示的文字,默认是Nullsoft Install System vX.XX

Section -Upgrade

    SetDetailsPrint textonly
    DetailPrint "正在安装必须的程序组件..."
    SetDetailsPrint none

    SetAutoClose true

    SetOutPath $INSTDIR
    File "产品.exe"
 
SectionEnd

/* ----------------------------------------------------------------------*/
^_^,升级程序完成了,简单吧。多一些人来加入NSIS吧,哈哈!

你可能感兴趣的:(Open,Source)