`
RednaxelaFX
  • 浏览: 3019232 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

ef - the first tale.的繁体中文汉化安装包的NSIS脚本

    博客分类:
  • NSIS
阅读更多
唉,当时没催社长把这汉化坚持做完真是太失策了.现在也只好就这么拖着,等ef - the latter tale.出的时候再鼓起干劲把它接着做完.本来是能指望跟简体版的汉化补丁同期放出的...

之前听师兄说起他最近用NSIS的经历才又想起来.现在就先把这个安装包的NSIS脚本放出来好了.反正已经没有什么需要隐藏的东西.不过大半年前写的这脚本果然是老了啊...很多东西都很不上现在的NSIS的脚步了.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "ef - the first tale. 繁體中文版"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "Router Buster"
!define PRODUCT_WEB_SITE "http://shibunoheya.blog86.fc2.com/"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\ef_first_1001chs.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "E:\ef patch working folder\ef.ico"
;!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_UNICON "E:\ef patch working folder\ef.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 "E:\ef patch working folder\license.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\ef_first_1001chs.exe"
;!define MUI_FINISHPAGE_RUN "$INSTDIR\ef_first_1001zhh.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}"

; MUI end ------

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

Function .onInit
  !insertmacro MUI_LANGDLL_DISPLAY
  InitPluginsDir
  ReadRegStr $INSTDIR HKLM "SOFTWARE\minori\ef_first" "InstallDir"
FunctionEnd

;; CHECK THIS FOR FONT INSTALLATION: $FONTS

Section "MainSection" SEC01
;--------------------------copy-----------------------------
  SetOutPath "$INSTDIR"
  DetailPrint "正在複製檔案..."
  SetOverwrite ifnewer
  File "E:\ef patch working folder\ef_first_1001chs.exe"
  CreateDirectory "$SMPROGRAMS\\"
  CreateShortCut "$SMPROGRAMS\\ef - the first tale. 繁體中文版.lnk" "$INSTDIR\ef_first_1001chs.exe"
  CreateShortCut "$DESKTOP\ef - the first tale. 繁體中文版.lnk" "$INSTDIR\ef_first_1001chs.exe"
  SetOverwrite on
  File "E:\ef patch working folder\scr.paz"
  File "E:\ef patch working folder\mov.paz"
  File "E:\ef patch working folder\tool\paz.exe"
  File "E:\ef patch working folder\tool\paz.ini"
;-------------------------extract----------------------------
;; TODO - 下面这部分只是测试!!!
  CreateDirectory "$INSTDIR\scr"
  nsExec::ExecToStack '"cd" $INSTDIR'
  nsExec::ExecToStack '"dir" > files.txt'
  nsExec::ExecToStack '"$INSTDIR\paz.exe" e $INSTDIR\scr.paz'
;  RMDir "$INSTDIR\"

   DetailPrint "正在更新檔案..."
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\ef_first_1001chs.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\ef_first_1001chs.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}"
  WriteRegStr HKLM "SOFTWARE\minori\ef_first" "InstallKeyCode" "07303ed1"
  WriteRegStr HKLM "SOFTWARE\minori\ef_first" "SerialCode" "11111-11111-11111-11111"
  WriteRegStr HKLM "SOFTWARE\minori\ef_first" "InstallDir" "$INSTDIR"
SectionEnd


Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "「ef - the first tale. 繁體中文版」已成功地从你的計算機移除。"
FunctionEnd

Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除「ef - the first tale. 繁體中文版」,其及所有組件?" IDYES +2
  Abort
FunctionEnd

Section Uninstall
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\mov.paz"
  Delete "$INSTDIR\scr.paz"
  Delete "$INSTDIR\ef_first_1001chs.exe"

  ;Delete "$DESKTOP\ef - the first tale. 繁體中文版(for 繁體作業系統).lnk"
  ;Delete "$SMPROGRAMS\\ef - the first tale. 繁體中文版(for 繁體作業系統).lnk"
  Delete "$DESKTOP\ef - the first tale. 繁體中文版(for 简体操作系统).lnk"
  Delete "$SMPROGRAMS\\ef - the first tale. 繁體中文版(for 简体操作系统).lnk"

  RMDir "$SMPROGRAMS\\"
  RMDir "$INSTDIR"

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

这个安装包的核心还是在于中间对我另外写的一个外部工具,"paz.exe"的调用.用paz.exe完成对原始归档的抽出和更新.上面的脚本里,extract的那段只是验证了几个关键点是否可行: 1.是否能实现目录转换 2.是否能实现目录中文件列表输出 3.是否能将原始paz归档的内容抽出.
本来这个paz.exe是会被用来抽出原本的bg.paz中的图片,然后把有更新的图片覆盖掉原本的那些,再将这些图片打包回到bg.paz中.不过我一直没收到那些改过的图,所以这命令也一直没写到安装包脚本里.再次叹气...
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics