首页 电脑 电脑学堂 查看内容

NSIS客户端打包工具脚本编写案例

2011-8-22 11:24 552 0

摘要: 对于目前游戏客户端打包来说安装文件越来越大,安装速度也越来越慢。由于前面提到的微软系统对于打包文件大小的限制问题,做过一些简单的说明和讲解,但是为了方便大家能够好理解。所以就做了以下NSIS示例出来。...
关键词: nbsp PRODUCT INSTDIR XXXX UNINST define Delete exe MUI XXXXX

对于目前游戏客户端打包来说安装文件越来越大,安装速度也越来越慢。由于前面提到的微软系统对于打包文件大小的限制问题,做过一些简单的说明和讲解,但是为了方便大家能够好理解。所以就做了以下NSIS示例出来。希望给那些要用NSIS工具进行打包客户端的朋友一些提示。 废话不多说,直接上示例。有不明白的地方可以留言,我看到尽量为大家解答。   示例: ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量!define PRODUCT_NAME "XXXX客户端"!define PRODUCT_VERSION "版本(X.X.X)"!define PRODUCT_PUBLISHER "蜀山大师兄有限公司"!define PRODUCT_WEB_SITE "http://www.蜀山.com"!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\XXXX.exe"!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"!define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzmaXPStyle on ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------!include "MUI.nsh"CRCCheck off ; MUI 预定义常量!define MUI_ABORTWARNING!define MUI_ICON "..\..\安装包素材\icon.ico"!define MUI_UNICON "..\..\安装包素材\icon.ico"!define MUI_WELCOMEFINISHPAGE_BITMAP "C:\Documents and Settings\Administrator\桌面\安装包素材\LOGO112.bmp"!define MUI_WELCOMEPAGE_TITLE "    XXXX客户端安装向导"!define MUI_WELCOMEPAGE_TEXT "  《XXX》采用自主开发3D引擎,XXXXXXXXNXXXNXXNXXNXNXNXNXNXNX。 单击 下一步 继续安装,或单击 取消 退出安装程序" ; 欢迎页面!insertmacro MUI_PAGE_WELCOME; 许可协议页面!define MUI_LICENSEPAGE_RADIOBUTTONS!insertmacro MUI_PAGE_LICENSE "..\..\安装包素材\最终用户许可协议.txt"; 安装目录选择页面!insertmacro MUI_PAGE_DIRECTORY; 安装过程页面!insertmacro MUI_PAGE_INSTFILES; 安装完成页面!define MUI_FINISHPAGE_RUN "$INSTDIR\XXXX.exe"!define MUI_FINISHPAGE_RUN_TEXT "运行 《XXXX》登录器"!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\XXXXX\DXSETUP.exe"!define MUI_FINISHPAGE_SHOWREADME_TEXT "DX9更新程序(请务必安装,否则可能无法正常游戏)"!insertmacro MUI_PAGE_FINISH ; 安装卸载过程页面!insertmacro MUI_UNPAGE_INSTFILES ; 安装界面包含的语言设置!insertmacro MUI_LANGUAGE "SimpChinese" ; 安装预释放文件!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS; ------ MUI 现代界面定义结束 ------ ReserveFile "${NSISDIR}\Plugins\advsplash.dll"ReserveFile "..\..\安装包素材\闪图.webp" Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"OutFile "AW_Setup(0.9.2.6).exe"InstallDir "$PROGRAMFILES\XXXX"InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"ShowInstDetails showShowUnInstDetails showBrandingText  "  XXXX_ONLINE" Section "test1" SEC01  SetOutPath "$INSTDIR"  SetOverwrite ifnewer  File /r "G:\XX\XXXX\*.*"  CreateDirectory "$SMPROGRAMS\XXXX"  CreateShortCut "$SMPROGRAMS\XXXX\XXXX.lnk" "$INSTDIR\XXXX登陆器.exe"  CreateShortCut "$DESKTOP\XXXX.lnk" "$INSTDIR\XXXX登陆器.exe"SectionEnd Section "AW1" SEC02  File /r "G:\XXXX\XXXXXX\*.*"SectionEnd Section "AW2" SEC03  File /r "G:\XXXX客户端\Support programs\*.*" /******************************** *  vcredist2005_x86静默安装支持程序  * ********************************/  ExecWait '"msiexec" /package "$INSTDIR\Support programs\vcredist_x86\vcredist.msi"  /qf /quiet' /********************************SectionEnd Section "AW4" SEC04  File "G:\XXXX\AncientWorld.exe"  File "G:\XXXX\XXXXX.dll"  File "G:\XXXX\XXXXX.exe"  File "G:\XXXX\XXXXX.exe"  File "G:\XXXX\XXXXX.exe"  File "G:\XXXX\XXXX登陆器.exe" /******************************** *  打开统计页面  * ********************************/  ExecWait  "$INSTDIR\Support programs\Web_URL.bat" /******************************** *  删除自解压文件  * ********************************/  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\XXXXX.exe"SectionEnd Section -AdditionalIcons  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"  CreateShortCut "$SMPROGRAMS\XXXX\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"  CreateShortCut "$SMPROGRAMS\XXXX\Uninstall.lnk" "$INSTDIR\uninst.exe"SectionEnd Section -Post  WriteUninstaller "$INSTDIR\uninst.exe"  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\AncientWorld.exe"  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\XXXXX.exe"  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"SectionEnd #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--# Function .onInit  InitPluginsDir  File "/oname=$PLUGINSDIR\Splash_闪图.webp" "..\..\安装包素材\闪图.webp"  ; 使用闪屏插件显示闪屏  advsplash::show 6000 1800 4200 -1 "$PLUGINSDIR\Splash_闪图"  Pop $0 ; $0 返回 '1' 表示用户提前关闭闪屏, 返回 '0' 表示闪屏正常结束, 返回 '-1' 表示闪屏显示出错FunctionEnd /****************************** *  以下是安装程序的卸载部分  * ******************************/ Section Uninstall  Delete "$INSTDIR\${PRODUCT_NAME}.url"  Delete "$INSTDIR\uninst.exe"  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\XXXXX.dll"  Delete "$INSTDIR\XXXXX.exe"  Delete "$INSTDIR\*.*"   Delete "$SMPROGRAMS\XXXX\Uninstall.lnk"  Delete "$SMPROGRAMS\XXXX\Website.lnk"  Delete "$DESKTOP\XXXX.lnk"  Delete "$SMPROGRAMS\XXXX\XXXX.lnk"   RMDir "$SMPROGRAMS\XXXX"   RMDir /r "$INSTDIR\vcredist_x86"   RMDir "$INSTDIR"   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"  SetAutoClose trueSectionEnd #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--# Function un.onInit  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2  AbortFunctionEnd Function un.onUninstSuccess  HideWindow  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"FunctionEnd 按照客户端的大小目前我测试的打包前的客户端大小为1.81GB。安装时间控制在3-4分钟。其实我静默安装的测试文件有3个这里只出现了1个。所以速度上面来说是够了。3个静默安装的程序文件能够稳定的安装成功。这是我测试出来的结果。所以如果大家发现什么问题请留言。 本文出自 “21世纪游戏运维” 博客,请务必保留此出处http://3sbin.blog.51cto.com/3098975/596994
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部