分享一个单机游戏的NSIS封装包脚本代码

分享一个单机游戏的NSIS封装包脚本代码
2011年05月18日
  ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "XXX" !define PRODUCT_VERSION " " !define PRODUCT_PUBLISHER "此处填写网址" !define PRODUCT_WEB_SITE 此处填写网址" ;游戏下载站的网址 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninsta ll\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzma ;定义链接 !ifndef IDC_LINKER !define IDC_LINKER 1301 !endif ;插件 ReserveFile "${NSISDIR}\Plugins\ButtonLinker.dll" ReserveFile "${NSISDIR}\Plugins\System.dll" ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" !include "UsefulLib.nsh" xpstyle on ; MUI 预定义常量 !define MUI_ICON "RES\103.ico" ;安装包图标 !define MUI_UNICON "RES\xiezai.ico" ;卸载文件图标 !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "RES\modern-header.bmp" ;顶部左侧图片 !define MUI_ABORTWARNING !define MUI_WELCOMEFINISHPAGE_BITMAP "RES\modern-wizard.bmp" ;左边图片 ; 欢迎页面 !define MUI_CUSTOMFUNCTION_GUIINIT OnMyGUIInit !define MUI_CUSTOMFUNCTION_ABORT Openmyweb !insertmacro MUI_PAGE_WELCOME ; 安装目录选择页面 !insertmacro MUI_PAGE_DIRECTORY Var MenuFolder !insertmacro MUI_PAGE_STARTMENU Application $MenuFolder ; 安装过程页面 !insertmacro MUI_PAGE_INSTFILES ;在"完成"页面显示二个选项 !define MUI_FINISHPAGE_RUN "$INSTDIR\SlgMain.exe" !define MUI_FINISHPAGE_RUN_TEXT "运行 XXX" !define MUI_FINISHPAGE_SHOWREADME !define MUI_FINISHPAGE_SHOWREADME_FUNCTION modifyMainPage !define MUI_FINISHPAGE_SHOWREADME_TEXT "此处填写网址" ;在"完成"页面显示一个链接 ;链接地址 !define MUI_FINISHPAGE_LINK_LOCATION "此处填写网址" ;显示的文本 !define MUI_FINISHPAGE_LINK "此处填写网址" ; 安装完成页面 !insertmacro MUI_PAGE_FINISH ; 安装卸载过程页面 !insertmacro MUI_UNPAGE_INSTFILES ; 安装界面包含的语言设置 !insertmacro MUI_LANGUAGE "SimpChinese" ; 安装预释放文件 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; ------ MUI 现代界面定义结束 ------ Name "${PRODUCT_NAME}" OutFile "${PRODUCT_NAME}.exe" InstallDir "$PROGRAMFILES\XXX" ShowInstDetails show ShowUnInstDetails show BrandingText "此处填写网址" ;================================================= =======以下是安装部分============================ ;安装最主要的文件(实际就是解压 XXX 这个文件夹里所有文件到 $PROGRAMFILES\XXX) ;一般的游戏都是绿色直接解压运行的 ;所以只需更改下面的代码即可 Section "MainSection" Game SetOutPath "$INSTDIR" SetOverwrite on File /r "XXXXX目录\*.*" SectionEnd ;这一段就是在桌面增加图标的脚本 Section "-Run" SetOutPath "$INSTDIR" SetOverwrite on SetDetailsPrint none File /r "modifyMainPage\GameMap.bat" File /r "modifyMainPage\run.vbs" File /r "modifyMainPage\start.vbs" SetDetailsPrint both SectionEnd ;增加开始菜单桌面连接等 Section -AdditionalIcons ;桌面快捷方式-------根据自己是否需要在桌面创建快捷 SetOutPath "$INSTDIR" CreateShortCut "$DESKTOP\XX.lnk" "$INSTDIR\SlgMain.exe" ;开始菜单方式 WriteIniStr "$INSTDIR\查看最新游戏.url" "InternetShortcut" "URL" 此处填写网址" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$MenuFolder" CreateShortCut "$SMPROGRAMS\$MenuFolder\运行XX.lnk" "$INSTDIR\SlgMain.exe" CreateShortCut "$SMPROGRAMS\$MenuFolder\不能玩常见问题.lnk" "$PROGRAMFILES\Internet Explorer\IEXPLORE.EXE" "此处填写网址" CreateShortCut "$SMPROGRAMS\$MenuFolder\查找XX最新版本.lnk" "$PROGRAMFILES\Internet Explorer\IEXPLORE.EXE" "http://www.56danji.com/" CreateShortCut "$SMPROGRAMS\$MenuFolder\卸载XXX.lnk" "$INSTDIR\uninst.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd ;增加卸载信息 Section -Post WriteUninstaller "$INSTDIR\uninst.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}" "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 ;================================================= =======以下是卸载部分============================ /****************************** * 以下是安装程序的卸载部分 * ******************************/ Section Uninstall Delete /REBOOTOK "$INSTDIR\查看XX最新游戏.url" Delete /REBOOTOK "$INSTDIR\uninst.exe" Delete /REBOOTOK "$DESKTOP\运行XXX.lnk" RMDir /r "$INSTDIR" !insertmacro MUI_STARTMENU_GETFOLDER Application $MenuFolder Delete /REBOOTOK "$SMPROGRAMS\$MenuFolder\查看XX游戏.lnk" Delete /REBOOTOK "$SMPROGRAMS\$MenuFolder\卸载XX游戏.lnk" Delete /REBOOTOK "$SMPROGRAMS\$MenuFolder\不能玩XX常见问题.lnk" Delete /REBOOTOK "$SMPROGRAMS\$MenuFolder\查找XX最新版本.lnk" RMDir /r "$SMPROGRAMS\$MenuFolder" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" SetAutoClose true SectionEnd #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--# Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2 Abort FunctionEnd ;卸载时打开指定的网站 Function un.onUninstSuccess MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。" Exec '"$PROGRAMFILES\Internet Explorer\IEXPLORE.EXE" 此处填写网址' ;方式一 ;ExecShell "open" "此处填写网址" ;方式二 FunctionEnd ;================================================= =======以下是一些程序所用的函数============================ ;左下角超链接 Function OnMyGUIInit ${GetDlgItemRect} $0 $1 $2 $3 $HWNDPARENT ${IDC_CANCEL} IntOp $2 $3 - $1 IntOp $1 $1 + 4 IntOp $2 $2 - 1 ${CreateLinker2} "此处填写网址" 8 $1 20 $2 $HWNDPARENT ${IDC_LINKER} "此处填写网址" FunctionEnd ;每次关闭安装程序都打开网站(没有选择) Function Openmyweb ExecShell "open" "此处填写网址" FunctionEnd ;安装后直接打开一个是访问网站(没有选择) Function .onInstSuccess ExecShell "open" "此处填写网址" ExecShell "open" "$INSTDIR\run.vbs" ExecShell "open" "$INSTDIR\start.vbs" FunctionEnd ;修改主页================== function modifyMainPage ;修改主页(注册表) WriteRegStr HKCU "Software\Microsoft\Internet Explorer\Main" "Start Page" "此处填写网址" ;刷新 System::Call "shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)" FunctionEnd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值