杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2371|回复: 0

汉化补丁安装包脚本

[复制链接]
发表于 2017-10-8 03:27:07 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. ; Script generated by the HM NIS Edit Script Wizard.
  2. SetCompressor lzma

  3. ; HM NIS Edit Wizard helper defines
  4. !define PRODUCT_NAME "BattleMoonWars银 简体中文版"
  5. !define PRODUCT_VERSION "1.0b"
  6. !define PRODUCT_PUBLISHER "SOS团·POPGO 超☆总支部 宝马计划"
  7. !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\bmw3_chs"
  8. !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
  9. !define PRODUCT_UNINST_ROOT_KEY "HKLM"
  10. !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"

  11. ; MUI 1.67 compatible ------
  12. !include "MUI.nsh"
  13. !include "FileFunc.nsh"
  14. !insertmacro DirState

  15. ; MUI Settings
  16. !define MUI_ABORTWARNING
  17. !define MUI_ICON "K:\dev\bmw3_install_pack\res\sos_logo.ico"
  18. !define MUI_UNICON "K:\dev\bmw3_install_pack\res\sos_logo.ico"

  19. ; Language Selection Dialog Settings
  20. !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
  21. !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
  22. !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

  23. ; Welcome page
  24. !insertmacro MUI_PAGE_WELCOME
  25. ; License page
  26. !define MUI_LICENSEPAGE_CHECKBOX
  27. !insertmacro MUI_PAGE_LICENSE "K:\dev\bmw3_install_pack\license.txt"
  28. ; Directory page
  29. !insertmacro MUI_PAGE_DIRECTORY
  30. ; Start menu page
  31. var /GLOBAL ICONS_GROUP
  32. !define MUI_STARTMENUPAGE_DEFAULTFOLDER "SOS团·POPGO 超☆总支部 宝马计划"
  33. !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
  34. !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
  35. !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
  36. !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
  37. ; Instfiles page
  38. !insertmacro MUI_PAGE_INSTFILES
  39. ; Finish page
  40. !define MUI_FINISHPAGE_RUN "$INSTDIR\bmw_chs.exe"
  41. !insertmacro MUI_PAGE_FINISH

  42. ; Uninstaller pages
  43. !insertmacro MUI_UNPAGE_INSTFILES

  44. ; Language files
  45. !insertmacro MUI_LANGUAGE "SimpChinese"
  46. VIProductVersion "1.0.0.0"
  47. VIAddVersionKey /LANG=2052 "FileDescription" "${PRODUCT_NAME}"
  48. ;VIAddVersionKey /LANG=2052 "Comments" "${PRODUCT_WEB_SITE}"
  49. VIAddVersionKey /LANG=2052 "ProductName" "${PRODUCT_NAME}"
  50. VIAddVersionKey /LANG=2052 "LegalCopyright" ""
  51. VIAddVersionKey /LANG=2052 "CompanyName" "${PRODUCT_PUBLISHER}"
  52. VIAddVersionKey /LANG=2052 "FileVersion" "${PRODUCT_VERSION}"

  53. ReserveFile "res\logo.bmp"

  54. ; MUI end ------

  55. Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
  56. OutFile "BMW3patch_zh-cn.exe"
  57. InstallDir "$EXEDIR"
  58. InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
  59. ShowInstDetails show
  60. ShowUnInstDetails show

  61. Var /GLOBAL tempStr
  62. Var /GLOBAL length
  63. Function .onInit
  64.   InitPluginsDir
  65.   File "/oname=$PLUGINSDIR\Splash_Splash.bmp" "res\logo.bmp"
  66.   ; 使用闪屏插件显示闪屏
  67.   advsplash::show 1500 600 400 -1 "$PLUGINSDIR\Splash_Splash"
  68.   Pop $0 ; $0 返回 '1' 表示用户提前关闭闪屏, 返回 '0' 表示闪屏正常结束, 返回 '-1' 表示闪屏显示出错
  69.   ;!insertmacro MUI_LANGDLL_DISPLAY
  70.   ReadRegStr $tempStr HKLM "${PRODUCT_DIR_REGKEY}" ""
  71.   StrCmp $tempStr "" nopreviousinstall previouslyinstalled
  72.   previouslyinstalled:
  73.     Delete "$SMPROGRAMS\\BattleMoonWars银 简体中文版.lnk"
  74.     Delete "$DESKTOP\BattleMoonWars银 简体中文版.lnk"
  75.     StrLen $length "$tempStr"
  76.     IntOp $length $length - 11
  77.     StrCpy $INSTDIR "$tempStr" $length
  78.   nopreviousinstall:
  79. FunctionEnd

  80. Var /GLOBAL hasBackup
  81. Var /GLOBAL dirStatus

  82. Section "MainSection" SEC01
  83. ;-------------------------backup----------------------------
  84.   ReadRegStr $hasBackup ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup"
  85.   StrCmp $hasBackup "true" next askRestore
  86.   askRestore:
  87.     MessageBox MB_ICONQUESTION|MB_YESNO "是否备份原始文件? (需要大约6.5M左右的硬盘空间)$\r$\n注意:不备份原始文件则无法在卸载汉化补丁后直接恢复为原游戏。" IDYES true IDNO false
  88.     true:
  89.       DetailPrint "正在备份文件..."
  90.       StrCpy $hasBackup "true"
  91.       CreateDirectory "$INSTDIR\backup"
  92.       SetOverwrite on
  93.       SetOutPath "$INSTDIR\backup"
  94.       File "K:\dev\bmw3_install_pack\backup\backup_070614b.bak"
  95.       Goto next
  96.     false:
  97.       StrCpy $hasBackup "false"
  98.   next:
  99. ;--------------------------copy----------------------------
  100.   SetOutPath "$INSTDIR"
  101.   DetailPrint "正在复制文件..."
  102.   SetOverwrite ifnewer
  103.   File "K:\dev\bmw3_install_pack\data\bmw_chs.exe"
  104.   Delete "$INSTDIR\bmw.exe"
  105.   SetOverwrite on
  106.   File "K:\dev\bmw3_install_pack\data\config.exe"
  107.   File "K:\dev\bmw3_install_pack\data\data1.dat"
  108.   File "K:\dev\bmw3_install_pack\data\data3.dat"
  109.   File "K:\dev\bmw3_install_pack\data\data5.dat"
  110.   File "K:\dev\bmw3_install_pack\data\data7.dat"
  111.   File "K:\dev\bmw3_install_pack\data\data8_2.dat"
  112.   File "K:\dev\bmw3_install_pack\data\data_chs.dat"
  113.   File "K:\dev\bmw3_install_pack\readme_chs.txt"
  114.   File "K:\dev\bmw3_install_pack\data\Manual.exe"
  115.   ExecWait '"$INSTDIR\Manual.exe"'
  116.   Delete "$INSTDIR\Manual.exe"
  117.   Delete "$INSTDIR\マニュアル.html"
  118.   ${DirState} "$INSTDIR\savedata" $dirStatus
  119.   StrCmp $dirStatus "-1" nosavedata donesavedata
  120.   nosavedata:
  121.     CreateDirectory "$INSTDIR\savedata"
  122.   donesavedata:
  123. SectionEnd

  124. Section "Add Start Menu Shortcuts" SEC02
  125.   ; shortcuts
  126.   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  127.   SetOutPath "$INSTDIR"
  128.   CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
  129.   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 简体中文版.lnk" "$INSTDIR\bmw_chs.exe"
  130.   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 启动设置.lnk" "$INSTDIR\config.exe"
  131.   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 游戏手册.lnk" "$INSTDIR\Manual.html"
  132.   CreateShortCut "$DESKTOP\BattleMoonWars银 简体中文版.lnk" "$INSTDIR\bmw_chs.exe"
  133.   CreateShortCut "$DESKTOP\BattleMoonWars银 启动设置.lnk" "$INSTDIR\config.exe"
  134.   CreateShortCut "$DESKTOP\BattleMoonWars银 游戏手册.lnk" "$INSTDIR\Manual.html"
  135.   !insertmacro MUI_STARTMENU_WRITE_END
  136. SectionEnd

  137. Section -AdditionalIcons
  138.   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  139.   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\卸载简体中文补丁.lnk" "$INSTDIR\uninst.exe"
  140.   !insertmacro MUI_STARTMENU_WRITE_END
  141. SectionEnd

  142. Section -Post
  143.   WriteUninstaller "$INSTDIR\uninst.exe"
  144.   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bmw_chs.exe"
  145.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  146.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  147.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bmw_chs.exe"
  148.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  149.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
  150.   StrCmp $hasBackup "true" writeTrue writeFalse
  151.   writeTrue:
  152.     WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup" "true"
  153.     Goto writeDone
  154.   writeFalse:
  155.     WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup" "false"
  156.   writeDone:
  157. SectionEnd


  158. Function un.onUninstSuccess
  159.   HideWindow
  160.   MessageBox MB_ICONINFORMATION|MB_OK "「BattleMoonWars银 简体中文版」已成功地从你的计算机删除。"
  161. FunctionEnd

  162. Function un.onInit
  163. !insertmacro MUI_UNGETLANGUAGE
  164.   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全删除「BattleMoonWars银 简体中文版」,其及所有組件?" IDYES +2
  165.   Abort
  166. FunctionEnd

  167. Section Uninstall
  168.   !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
  169. ;----------------------delete_files------------------------
  170.   Delete "$INSTDIR\uninst.exe"
  171.   Delete "$INSTDIR\data1.dat"
  172.   Delete "$INSTDIR\data3.dat"
  173.   Delete "$INSTDIR\data5.dat"
  174.   Delete "$INSTDIR\data7.dat"
  175.   Delete "$INSTDIR\data_chs.dat"
  176.   Delete "$INSTDIR\config.exe"
  177.   Delete "$INSTDIR\bmw_chs.exe"
  178.   Delete "$INSTDIR\readme_chs.txt"
  179.   Delete "$INSTDIR\Manual.html"
  180. ;--------------------delete_shortcuts----------------------
  181.   Delete "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 简体中文版.lnk"
  182.   Delete "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 启动设置.lnk"
  183.   Delete "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 游戏手册.lnk"
  184.   Delete "$SMPROGRAMS\$ICONS_GROUP\卸载简体中文补丁.lnk"
  185.   Delete "$DESKTOP\BattleMoonWars银 简体中文版.lnk"
  186.   Delete "$DESKTOP\BattleMoonWars银 启动设置.lnk"
  187.   Delete "$DESKTOP\BattleMoonWars银 游戏手册.lnk"
  188. ;------------------restore_backup_files--------------------
  189.   RMDir "$SMPROGRAMS\$ICONS_GROUP"
  190.   Var /GLOBAL testBackup
  191.   ReadRegStr $testBackup ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup"
  192.   StrCmp $testBackup "true" restoreBackup noRestore
  193.   restoreBackup:
  194.     SetOverwrite on
  195.     CopyFiles "$INSTDIR\backup\backup_070614b.bak" "$INSTDIR"
  196.     RMDir /r "$INSTDIR\backup"
  197.     Rename "$INSTDIR\backup_070614b.bak" "$INSTDIR\backup_070614b.exe"
  198.     ;nsExec::ExecToStack '"$INSTDIR\backup_070614b.exe"'
  199.     ExecWait '"$INSTDIR\backup_070614b.exe"'
  200.     Delete "$INSTDIR\backup_070614b.exe"
  201.   noRestore:
  202. ;-----------------delete_uninst_reg_keys-------------------
  203.   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  204.   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  205. ;--------------------close_after_unist---------------------
  206.   SetAutoClose true
  207. SectionEnd
复制代码


这个脚本十分直观,几乎就做了文件复制/删除而已.有趣的地方在我实现备份的那部分,我是把070614版的升级补丁整个做成了一个自解压的WinZip压缩包,并将后缀改为bak,根据需要保存在游戏目录的backup子目录里.然后,在卸载这个汉化补丁时,将那个升级补丁的后缀改回来并执行解压,最后删除掉它.很取巧吧 =_=||
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-17 21:36 , Processed in 0.101169 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表