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

《更胜黎明前的琉璃色》简体中文汉化版安装包1.1 NSIS脚本

    博客分类:
  • NSIS
阅读更多
这次这补丁的安装包是赶出来的,真糟糕。不过至少能拿BMW3补丁的NSIS脚本作为基础来改,倒也没多麻烦。
这次有几个需求:
1、需要做splash
2、需要添加左侧的图片
3、需要播放背景音乐
4、需要备份若干个原始文件
相比之下,之前BMW补丁的安装包功能似乎还更多些,例如说检查注册表什么的。这次偷懒就不检查了。

显示splash图像用的是NSIS自带的一个splash plugin。这个跟BMW那个补丁里用的一样。
播放背景音乐则用到了nsisbass插件。这个插件下载下来之后文件都混在了一起,要自己把.nsh文件复制到NSIS的%NSISDIR%\include目录里,并且把bass.dll复制到%NSISDIR%\Contrib\nsisbass目录里。

本来有另外一个插件看起来似乎更好用,EBanner,下次有时间再看看吧。多谢师兄帮忙找插件啦~~

==============================================================================

补丁的工作目录结构:
workingdir
│  bass.dll
│  yoake.nsi
│  
├─bmp
│      inst.bmp
│      splash.bmp
│      
├─files
│      arc00.arc
│      arc63.arc
│      BGI_CHS.exe
│      sysgrp.arc
│      sysprg.arc
│      system.arc
│      
├─icon
│      yak966464.ico
│      
├─music
│      bgm.mp3
│      
└─txt
        License.txt


相应的脚本:
yoake.nsi
; Script generated by the HM NIS Edit Script Wizard.
SetCompressor lzma

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "更胜黎明前的琉璃色 汉化补丁"
!define PRODUCT_VERSION "1.1"
!define PRODUCT_PUBLISHER "月桂琉璃汉化组"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\yoake_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"
!define MUI_WELCOMEFINISHPAGE_BITMAP ".\bmp\inst.bmp"
!include "FileFunc.nsh"
!include "nsisbass.nsh"
!include "nsisbassmacros.nsh"
!insertmacro DirState

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON ".\icon\yak966464.ico"
!define MUI_UNICON ".\icon\yak966464.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 ".\txt\License.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Start menu page
var /GLOBAL ICONS_GROUP
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "月桂琉璃汉化组"
!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\BGI_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 "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG=2052 "LegalCopyright" ""
VIAddVersionKey /LANG=2052 "CompanyName" "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=2052 "FileVersion" "${PRODUCT_VERSION}"

ReserveFile ".\bmp\splash.bmp"
ReserveFile "${NSISDIR}\Plugins\system.dll"
ReserveFile ".\bass.dll"
ReserveFile ".\music\bgm.mp3"

; MUI end ------

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

Function .onInit
  InitPluginsDir
  File "/oname=$PLUGINSDIR\Splash_Splash.bmp" ".\bmp\splash.bmp"
  ; 使用闪屏插件显示闪屏
  advsplash::show 1500 600 400 -1 "$PLUGINSDIR\Splash_Splash"
  Pop $0 ; $0 返回 '1' 表示用户提前关闭闪屏, 返回 '0' 表示闪屏正常结束, 返回 '-1' 表示闪屏显示出错
  ;!insertmacro MUI_LANGDLL_DISPLAY
  StrCpy $INSTDIR "C:\Program Files\August\YoakemaeyoriRuriirona"
  ; Insert the NSISBASS_INIT macro
  !insertmacro NSISBASS_INIT
  ; We can extract a song file as well (so you got something to play).
  File "/oname=$PLUGINSDIR\tempsong.mp3" ".\music\bgm.mp3"
  !insertmacro NSISBASS_PLAY "$PLUGINSDIR\tempsong.mp3"
FunctionEnd

Var /GLOBAL dirStatus

Section "MainSection" SEC01
;-------------------------backup----------------------------
  DetailPrint "正在备份文件..."
  CreateDirectory "$INSTDIR\backup"
  SetOverwrite on
  SetOutPath "$INSTDIR\backup"
  CopyFiles /SILENT "$INSTDIR\sysgrp.arc" "$INSTDIR\backup"
  CopyFiles /SILENT "$INSTDIR\sysprg.arc" "$INSTDIR\backup"
  CopyFiles /SILENT "$INSTDIR\system.arc" "$INSTDIR\backup"
  CopyFiles /SILENT "$INSTDIR\arc63.arc" "$INSTDIR\backup"
;--------------------------copy----------------------------
  SetOutPath "$INSTDIR"
  DetailPrint "正在复制文件..."
  SetOverwrite ifnewer
  File ".\files\BGI_CHS.exe"
  SetOverwrite on
  File ".\files\arc00.arc"
  File ".\files\arc63.arc"
  File ".\files\sysgrp.arc"
  File ".\files\sysprg.arc"
  File ".\files\system.arc"
  ${DirState} "$INSTDIR\UserData" $dirStatus
  StrCmp $dirStatus "-1" nosavedata donesavedata
  nosavedata:
    CreateDirectory "$INSTDIR\UserData"
  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\更胜黎明前的琉璃色 汉化版.lnk" "$INSTDIR\BGI_CHS.exe"
  CreateShortCut "$DESKTOP\更胜黎明前的琉璃色 汉化版.lnk" "$INSTDIR\BGI_CHS.exe"
  !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}"
SectionEnd


Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "「更胜黎明前的琉璃色 汉化补丁」已成功地从你的计算机删除。"
FunctionEnd

Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全删除「更胜黎明前的琉璃色 汉化补丁」,其及所有組件?" IDYES +2
  Abort
FunctionEnd

Section Uninstall
  !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
;----------------------delete_files------------------------
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\arc00.arc"
  Delete "$INSTDIR\arc63.arc"
  Delete "$INSTDIR\BGI_CHS.exe"
;--------------------delete_shortcuts----------------------
  Delete "$SMPROGRAMS\$ICONS_GROUP\更胜黎明前的琉璃色 汉化版.lnk"
  Delete "$SMPROGRAMS\$ICONS_GROUP\卸载简体中文补丁.lnk"
  Delete "$DESKTOP\更胜黎明前的琉璃色 汉化版.lnk"
  RMDir "$SMPROGRAMS\$ICONS_GROUP"
;------------------restore_backup_files--------------------
  SetOverwrite on
  CopyFiles "$INSTDIR\backup\arc63.arc" "$INSTDIR"
  CopyFiles "$INSTDIR\backup\sysgrp.arc" "$INSTDIR"
  CopyFiles "$INSTDIR\backup\sysprg.arc" "$INSTDIR"
  CopyFiles "$INSTDIR\backup\system.arc" "$INSTDIR"
  RMDir /r "$INSTDIR\backup"
;-----------------delete_uninst_reg_keys-------------------
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
;--------------------close_after_unist---------------------
  SetAutoClose true
SectionEnd

赶工的痕迹挺明显的……不过反正能满足组里的发布需要就算了。

夜明所使用的版本的BGI读取文件有特殊顺序:游戏安装目录->arc00.arc中->arc01.arc中->...->arc99.arc中,或者直接从sysgrp.arc、sysprg.arc、system.arc中读。而游戏本身使用的归档文件是从arc01.arc开始的,也就意味着可以把补丁所需要的非系统类的文件放在arc00.arc里而不用去改动其它arcXX.arc文件,节省了补丁空间。系统类文件则只能对应的放到sysgrp.arc、sysprg.arc、system.arc里。
AUGUST出过两个夜明的升级补丁,其中ver2增添了一个arc63.arc。于是这次做的汉化补丁也顺便把这个arc63.arc带上了,以免使用该补丁的人没有打过官方补丁而出现错误。

======================================================

昨天终于把这个补丁做出来发了出去,怎么说呢,觉得松了口气,但并没有很激动很兴奋的感觉。可能是因为就在补丁发出不久就看到汉公退出的事。不能继续跟汉公真是个巨大的损失。

汉公加油!
分享到:
评论
2 楼 RednaxelaFX 2014-01-14  
evasnowind 写道
之前关于JVM的问题请教过楼主,没想到又在搜这个游戏的时候赫然发现了楼主的这个帖子,看来大家是同道中人哈~~

呃呵呵,是啊是啊。
1 楼 evasnowind 2014-01-13  
之前关于JVM的问题请教过楼主,没想到又在搜这个游戏的时候赫然发现了楼主的这个帖子,看来大家是同道中人哈~~

相关推荐

    NSIS脚本实例NSIS脚本实例

    NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例NSIS脚本实例

    NSIS安装包

    NSIS(Nullsoft Scriptable Install System)是一款流行的开源安装包制作工具,主要用于创建Windows平台上的安装、卸载程序。它的核心特性在于其可脚本化的性质,允许开发者使用简单的脚本语言来定制安装过程,包括...

    NSIS汉化版打包的打包工具;打包工具

    汉化版的NSIS则为中文用户提供了更友好的界面和文档,使得国内用户在使用过程中能更加顺畅地进行软件打包工作。 NSIS的核心特点包括: 1. **脚本驱动**:NSIS基于简单易学的脚本语言,允许开发者通过编写脚本来...

    nsis脚本 安装包

    nsis脚本 安装包 私人珍藏 请好好利用 nsis脚本 安装包 私人珍藏 请好好利用

    NSIS安装包全套工具包你满意-省时省力

    NSIS(Nullsoft Scriptable Install System)是一款流行的开源软件安装制作系统,被广泛用于创建Windows平台上的安装程序。它提供了一种灵活的方式,允许开发者通过脚本语言来定制安装过程,实现各种复杂的功能,如...

    nsSkinEngine_美化_安装包_NSIS_DirectUI_界面库_插件_防解包_自动升级_Duilib_C++_软件开发

    支持异形动画DirectUI,DPI适配,兼容Duilib简单布局,支持XP及以上OS,简单绿色,API详细注释,丰富开源例子

    通用自动更新NSIS安装包程序ex

    通用自动更新NSIS安装包程序 检查本地的配置版本与服务器配置的版本, 如果服务器比较新则进行下载并更新文件. 注意: 需要结合NSIS安装包进行安装. 升级时采用/S静默安装方式进行安装. 配置中, "name"属性指定的...

    通过NSIS制作Windows安装包(附带11个小例子)

    **NSIS制作Windows安装包详解** NSIS,全称Nullsoft Scriptable Install System,是一款开源、免费的Windows系统下的安装包制作工具。它允许开发者通过脚本语言编写安装程序,生成可执行的.exe安装文件,具有高度...

    NSIS安装包及示例脚本

    1 开发环境 ...包含NSIS、HM NIS Edit和NsProcess安装包,以及示例脚本,示例脚本演示了基于NSIS如何制作一个安装包,如何在安装或卸载程序时判断指定程序是否在运行,如何让指定程序开机自启等功能。

    NSIS 安装包制作仿酷狗界面

    最近研究NSIS安装包制作。 做了一套基于IIS, sql server 的安装包。全部通过页面输入变量获取, 所有刷库,修改xml,iis配置通过脚本完成。 界面正在研究中,附件为仿酷狗的界面。 如果有什么疑问可以一起讨论怎么...

    7-Zip_19.00_x86_x64汉化修改版 带NSIS脚本反编译

    总的来说,这个压缩包提供了一套集成了7-Zip汉化版和NSIS脚本反编译功能的工具,对于经常需要处理压缩文件和创建Windows安装程序的用户来说,是一个非常实用的资源。使用时,用户需先阅读“说明.txt”了解具体操作...

    nsis打包工具3.0.8中文增强版

    1. nsis中文版本,自带教程手册 2. 可以打包electron生成的项目,大大减小打包体积 3. 自带有zeus打包脚本具体可以参考 https://blog.csdn.net/qq_35921773/article/details/129832612

    NSIS安装包制作教程

    本教程将深入探讨如何使用NSIS来创建自己的安装包,旨在帮助初学者快速上手。 首先,我们需要了解NSIS的基本概念。NSIS是一个基于脚本的语言,它的语法简单易学,允许开发者通过编写脚本来定制安装过程的每一个细节...

    NSIS 简体中文增强版

    NSIS(Nullsoft Scriptable Install System...总的来说,NSIS简体中文增强版是开发人员和爱好者创建Windows安装程序的理想选择,它以其灵活的脚本语言、全面的功能和友好的中文界面,使得软件打包工作变得轻松而高效。

    可完美反编译NSIS的7-zip(7-zip V15.05)

    【标题】: "可完美反编译NSIS的7-zip(7-zip V15.05)" 本文将详细介绍如何使用7-Zip V15.05这个版本来反编译NSIS(Nullsoft Scriptable Install System)制作的安装程序。7-Zip是一款强大的开源压缩软件,支持多种...

    nsis多语言的安装包制作脚本

    NSIS(Nullsoft Scriptable Install System)是一款流行的开源安装包制作工具,广泛用于创建Windows平台上的安装程序。它支持自定义脚本,可以实现复杂的安装逻辑,并且具有良好的跨语言能力。在本话题中,我们将...

    NSIS安装包制作教程详细版

    NSIS安装包制作教程 分为三个目录:基础,插件,脚本 NSIS System 插件 NSIS VPatch 3.1插件 NSIS InstallOptions 2 插件 NSIS Modern UI(新式用户界面)插件 NSIS的Modern UI插件 NSIS里特殊符号的表达方法 ...

    NSIS安装软件脚本详细教程.pdf

    NSIS安装软件脚本详细教程

    windows下安装包制作软件:NSIS的使用方法(以electron为例)

    NSIS(Nullsoft Scriptable Install System)是一款流行的开源安装包制作工具,主要用于Windows平台,它允许开发者使用脚本语言创建自定义的安装、卸载程序。NSIS的强大之处在于其灵活性和可扩展性,可以满足各种...

Global site tag (gtag.js) - Google Analytics