Battle Moon Wars 3 支部版汉化补丁1.0b的安装包脚本

说到底,到现在我参与了的游戏汉化就这个是最彻底的完成了预定计划的.也把它的NSIS脚本放出来吧.这脚本也是暑假前写的了呢...在那之后我都没怎么用过NSIS.

[code]; Script generated by the HM NIS Edit Script Wizard.
SetCompressor lzma

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

; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "FileFunc.nsh"
!insertmacro DirState

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

; Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "K:\dev\bmw3_install_pack\license.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Start menu page
var /GLOBAL ICONS_GROUP
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "SOS团·POPGO 超☆总支部 宝马计划"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\bmw_chs.exe"
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "SimpChinese"
VIProductVersion "1.0.0.0"
VIAddVersionKey /LANG=2052 "FileDescription" "${PRODUCT_NAME}"
;VIAddVersionKey /LANG=2052 "Comments" "${PRODUCT_WEB_SITE}"
VIAddVersionKey /LANG=2052 "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG=2052 "LegalCopyright" ""
VIAddVersionKey /LANG=2052 "CompanyName" "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=2052 "FileVersion" "${PRODUCT_VERSION}"

ReserveFile "res\logo.bmp"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "BMW3patch_zh-cn.exe"
InstallDir "$EXEDIR"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show

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

Var /GLOBAL hasBackup
Var /GLOBAL dirStatus

Section "MainSection" SEC01
;-------------------------backup----------------------------
ReadRegStr $hasBackup ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup"
StrCmp $hasBackup "true" next askRestore
askRestore:
MessageBox MB_ICONQUESTION|MB_YESNO "是否备份原始文件? (需要大约6.5M左右的硬盘空间)$\r$\n注意:不备份原始文件则无法在卸载汉化补丁后直接恢复为原游戏。" IDYES true IDNO false
true:
DetailPrint "正在备份文件..."
StrCpy $hasBackup "true"
CreateDirectory "$INSTDIR\backup"
SetOverwrite on
SetOutPath "$INSTDIR\backup"
File "K:\dev\bmw3_install_pack\backup\backup_070614b.bak"
Goto next
false:
StrCpy $hasBackup "false"
next:
;--------------------------copy----------------------------
SetOutPath "$INSTDIR"
DetailPrint "正在复制文件..."
SetOverwrite ifnewer
File "K:\dev\bmw3_install_pack\data\bmw_chs.exe"
Delete "$INSTDIR\bmw.exe"
SetOverwrite on
File "K:\dev\bmw3_install_pack\data\config.exe"
File "K:\dev\bmw3_install_pack\data\data1.dat"
File "K:\dev\bmw3_install_pack\data\data3.dat"
File "K:\dev\bmw3_install_pack\data\data5.dat"
File "K:\dev\bmw3_install_pack\data\data7.dat"
File "K:\dev\bmw3_install_pack\data\data8_2.dat"
File "K:\dev\bmw3_install_pack\data\data_chs.dat"
File "K:\dev\bmw3_install_pack\readme_chs.txt"
File "K:\dev\bmw3_install_pack\data\Manual.exe"
ExecWait '"$INSTDIR\Manual.exe"'
Delete "$INSTDIR\Manual.exe"
Delete "$INSTDIR\マニュアル.html"
${DirState} "$INSTDIR\savedata" $dirStatus
StrCmp $dirStatus "-1" nosavedata donesavedata
nosavedata:
CreateDirectory "$INSTDIR\savedata"
donesavedata:
SectionEnd

Section "Add Start Menu Shortcuts" SEC02
; shortcuts
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 简体中文版.lnk" "$INSTDIR\bmw_chs.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 启动设置.lnk" "$INSTDIR\config.exe"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 游戏手册.lnk" "$INSTDIR\Manual.html"
CreateShortCut "$DESKTOP\BattleMoonWars银 简体中文版.lnk" "$INSTDIR\bmw_chs.exe"
CreateShortCut "$DESKTOP\BattleMoonWars银 启动设置.lnk" "$INSTDIR\config.exe"
CreateShortCut "$DESKTOP\BattleMoonWars银 游戏手册.lnk" "$INSTDIR\Manual.html"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd

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

Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bmw_chs.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\bmw_chs.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
StrCmp $hasBackup "true" writeTrue writeFalse
writeTrue:
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup" "true"
Goto writeDone
writeFalse:
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup" "false"
writeDone:
SectionEnd


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

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

Section Uninstall
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
;----------------------delete_files------------------------
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\data1.dat"
Delete "$INSTDIR\data3.dat"
Delete "$INSTDIR\data5.dat"
Delete "$INSTDIR\data7.dat"
Delete "$INSTDIR\data_chs.dat"
Delete "$INSTDIR\config.exe"
Delete "$INSTDIR\bmw_chs.exe"
Delete "$INSTDIR\readme_chs.txt"
Delete "$INSTDIR\Manual.html"
;--------------------delete_shortcuts----------------------
Delete "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 简体中文版.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 启动设置.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\BattleMoonWars银 游戏手册.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\卸载简体中文补丁.lnk"
Delete "$DESKTOP\BattleMoonWars银 简体中文版.lnk"
Delete "$DESKTOP\BattleMoonWars银 启动设置.lnk"
Delete "$DESKTOP\BattleMoonWars银 游戏手册.lnk"
;------------------restore_backup_files--------------------
RMDir "$SMPROGRAMS\$ICONS_GROUP"
Var /GLOBAL testBackup
ReadRegStr $testBackup ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "hasBackup"
StrCmp $testBackup "true" restoreBackup noRestore
restoreBackup:
SetOverwrite on
CopyFiles "$INSTDIR\backup\backup_070614b.bak" "$INSTDIR"
RMDir /r "$INSTDIR\backup"
Rename "$INSTDIR\backup_070614b.bak" "$INSTDIR\backup_070614b.exe"
;nsExec::ExecToStack '"$INSTDIR\backup_070614b.exe"'
ExecWait '"$INSTDIR\backup_070614b.exe"'
Delete "$INSTDIR\backup_070614b.exe"
noRestore:
;-----------------delete_uninst_reg_keys-------------------
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
;--------------------close_after_unist---------------------
SetAutoClose true
SectionEnd[/code]

这个脚本十分直观,几乎就做了文件复制/删除而已.有趣的地方在我实现备份的那部分,我是把070614版的升级补丁整个做成了一个自解压的WinZip压缩包,并将后缀改为bak,根据需要保存在游戏目录的backup子目录里.然后,在卸载这个汉化补丁时,将那个升级补丁的后缀改回来并执行解压,最后删除掉它.很取巧吧 =_=||
没办法,我懒.有什么又简单又能偷懒的办法的话,我一定不会放过的 XD
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值