博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSIS打包软件(二)
阅读量:6245 次
发布时间:2019-06-22

本文共 3415 字,大约阅读时间需要 11 分钟。

  上一篇()主要介绍了NSIS打包软件安装程序,对于我们软件行业来说一般软件都不可能只有一次安装就可以了,还包括以后的软件程序的更新,所以这节主要是针对NSIS打包升级程序安装包,平常软件的更新主要是程序文件的替换和数据库的更新,以下代码也正是如此。好了,不废话,NSIS软件更新包打包代码如下:

; 安装程序初始定义常量!define PRODUCT_NAME "XX广告制作管理软件"!define PRODUCT_VERSION "2.2"!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\YBest.Ads.exe"SetCompressor lzma; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------!include "MUI.nsh"!include "WordFunc.nsh"; MUI 预定义常量!define MUI_ICON "ybkj.ico"; 欢迎页面!insertmacro MUI_PAGE_WELCOME; 许可协议页面!insertmacro MUI_PAGE_LICENSE "Readme.txt"; 安装过程页面!insertmacro MUI_PAGE_INSTFILES; 安装界面包含的语言设置!insertmacro MUI_LANGUAGE "SimpChinese";文件版本声明VIProductVersion "2.2.0.0"VIAddVersionKey /LANG=2052 "ProductName" "${PRODUCT_NAME}"VIAddVersionKey /LANG=2052 "Comments" "软件版权归XX软件所有,他人不得复制或二次开发本程序。"VIAddVersionKey /LANG=2052 "CompanyName" "www.XX.com"VIAddVersionKey /LANG=2052 "LegalTrademarks" "XX软件"VIAddVersionKey /LANG=2052 "LegalCopyright" "XX.com"VIAddVersionKey /LANG=2052 "FileDescription" "XX广告制作软件-V${PRODUCT_VERSION}升级程序"VIAddVersionKey /LANG=2052 "FileVersion" "${PRODUCT_VERSION}"; 安装预释放文件!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS; ------ MUI 现代界面定义结束 ------Name "${PRODUCT_NAME} - V${PRODUCT_VERSION}升级程序"OutFile "${PRODUCT_NAME}-V${PRODUCT_VERSION}升级包.exe"InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""ShowInstDetails hideBrandingText "XX软件 www.XX.com";  ------ 更新软件 ------Section "UpdateSoft" SEC01    ;休眠1秒钟 展示安装效果  Sleep 1000  SetDetailsPrint textonly  DetailPrint "正在升级 ${PRODUCT_NAME},请单击[关闭]按钮完成升级!"  SetDetailsPrint listonly  SectionIn RO  SetOutPath "$INSTDIR";更新比原目录日期新的文件SetOverwrite ifnewer  ;升级文件  File "YBest.Ads.exe"  File "YBest.Ads.exe.config"  File "YBest.BLL.dll"  File "YBest.Common.dll"  File "YBest.DAL.dll"  File "YBest.DBUtility.dll"  File "YBest.Model.dll"  File "MqttLib.dll"  File "PullService.dll"  File "更新说明.txt"  File "update.sql"    ;更新数据库  Call updateDB  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "version" "${PRODUCT_VERSION}" ;写入版本号  ;指定以记事本打开说明  ;Exec '"$SYSDIR\notepad.exe" "$INSTDIR\更新说明.txt"'SectionEnd;  ------ 更新软件结束 ------;更新数据库Function updateDB            ;检查mysql服务是否启动      Push "mysqld.exe"        ProcessWork::existsprocess        Pop $R0        IntCmp $R0 1 ExecSql            MessageBox MB_OK|MB_ICONEXCLAMATION "mysql数据库服务未启动,请启动后再升级程序!"                Quit ;未启动则 退出更新安装程序            ExecSql:          ;更新数据      ExecWait 'mysql --user=root --password=123456 --execute="source $INSTDIR\update.sql"' $2          StrCmp $2 1 0 endinst          MessageBox MB_OK|MB_ICONEXCLAMATION "数据库更新失败!请确认账号密码是否正确或数据库已安装!"          Delete "$INSTDIR\update.sql" ;删除文件                Quit ;未启动则 退出更新安装程序            endinst:            Delete "$INSTDIR\update.sql" ;删除文件FunctionEndFunction .onInit ;判断是否已安装  ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""  StrCmp $0 "" 0 NoAbort    MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装${PRODUCT_NAME},不能使用此升级程序!"    Abort ;退出安装程序  NoAbort:     ;程序正在运行则关闭程序  Push $R0  CheckProc:    Push "YBest.Ads.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 "YBest.Ads.exe"    Processwork::KillProcess    Sleep 1000    Goto CheckProc    Exit:    Abort    Done:    Pop $R0FunctionEnd

 欢迎大家批评指正,共同进步!谢谢!

转载于:https://www.cnblogs.com/MineDream/archive/2013/04/07/3003501.html

你可能感兴趣的文章
Mars说光场(3)— 光场采集
查看>>
中小企业客户营收增长将成微博2016年主推动力
查看>>
第一个掘金文章
查看>>
我的友情链接
查看>>
微信Windows版无法备份聊天记录
查看>>
Github上传代码菜鸟超详细教程
查看>>
资金项目性能优化
查看>>
Java将图片处理成背景透明的圆形图片
查看>>
知道IP地址怎么查看mac地址
查看>>
2016年度总结
查看>>
对于常见未得到支持操作的理解
查看>>
Win7 下Maple驱动问题解决方案
查看>>
hibernate 不输出sql参数的解决
查看>>
Netty的异步事件驱动(ChannelFuture)
查看>>
PostgreSQL数据类型-货币类型
查看>>
eclipse.ini、flashbuilder.ini内存设置和堆栈非堆栈问题
查看>>
线程下变量-原子操作 __sync_fetch_and_add等等
查看>>
Java 远程调试
查看>>
android 一个小例子说明handler和AlertDialog的简单使用
查看>>
解密Redis持久化
查看>>