分享一个单机游戏的NSIS封装包脚本代码
2011-05-18 13:43
731 查看
; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "XXX" !define PRODUCT_VERSION " " !define PRODUCT_PUBLISHER "此处填写网址" !define PRODUCT_WEB_SITE 此处填写网址" ;游戏下载站的网址 !define PRODUCT_UNINST_KEY "Software/Microsoft/Windows/CurrentVersion/Uninstall/${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
相关文章推荐
- 游戏服务端IOCP模型,自己封装的一个类,3行代码搞定服务端。
- 分享一个延时加载的封装代码
- 用java写的一个图片爬虫脚本_代码分享
- 用Vue写的一个计时游戏,来源于脚本之家的代码,自己写了注释,修改了部分地方
- 分享一个入门级可控多线程shell脚本代码
- Shell脚本实现判断IP地址是否在一个ip段内代码分享
- 25个不错PHP游戏编程脚本代码分享(1)
- 一个PHP验证码类代码分享(已封装成类)
- Shell脚本实现判断IP地址是否在一个ip段内代码分享
- 分享一个入门级可控多线程shell脚本代码
- 分享一个完整程序的代码(消除类游戏)
- 分享一个生产环境中利用SVN上线代码的脚本
- 分享一个猜数字游戏的JAVA代码
- 25个不错PHP的游戏编程脚本代码分享(1)
- 25个不错PHP的游戏编程脚本代码分享
- 分享一个另类的代码注释
- 简单封装一个AlertDialog,调用只需要两行代码
- 分享一个SSH防爆力破解的脚本
- shell脚本实现拷贝大文件显示百分比的代码分享