Skip to content

部署细节 ​

这篇列出安装器对文件系统做的全部改动,便于审计、手工排障或写自动化脚本。

命令行参考 ​

cmd
StudioInstaller.exe                :: 安装(默认行为)
StudioInstaller.exe --install      :: 安装
StudioInstaller.exe -s             :: 查询状态,输出 Installed / NotInstalled
StudioInstaller.exe --status       :: 同上
StudioInstaller.exe -u             :: 卸载
StudioInstaller.exe --uninstall    :: 卸载

:: --studio 直接指定目标,跳过选择菜单(三种命令都支持)
StudioInstaller.exe --install   --studio "D:\Studio 2.0"
StudioInstaller.exe --status    --studio "D:\Studio 2.0\Studio.exe"
StudioInstaller.exe --uninstall --studio "D:\Studio 2.0"

--studio 接受安装目录或**Studio.exe 的完整路径**,两者等价:传入文件路径时安装器会自动取其所在目录。路径会去掉首尾空格与引号后再校验。

退出码含义
0成功(--status 时表示 Installed)
1失败(--status 时表示 NotInstalled)

双击运行(无参数、控制台可交互)时,程序会在结束前暂停并提示 Press Enter to close this window...,方便查看输出;用命令行调用或重定向输出时不会阻塞。

选择 Studio 目录 ​

不带 --studio 且控制台可交互时,安装器先扫描 C:\Program Files\Studio 2.0 与 C:\Program Files (x86)\Studio 2.0,然后显示选择菜单:

text
请选择 Studio 安装目录:
  1. C:\Program Files\Studio 2.0 (自动识别)
  M. 手动指定目录或 Studio.exe
  0. 取消
输入编号或 M:
输入行为
编号(如 1)选中对应的自动识别结果
M进入手动指定:粘贴目录或 Studio.exe 路径;直接回车则打开文件选择窗口
0取消,不做任何改动
其他提示 [Error] 请输入有效编号、M 或 0。,重新等待输入

手动输入的路径校验不通过时,提示下面这行后回到输入循环,可以重新填:

text
[Error] 无效的 Studio 目录,必须包含 Studio.exe 和 Studio_Data\Managed\Studio.Startup.dll。

非交互环境

重定向了输入或输出(脚本、CI)时不会显示菜单,直接使用第一个自动识别到的目录;一个都没检测到则中止,并提示用 --studio <path> 指定。

安装:部署清单 ​

所有文件部署到 <Studio>\Studio_Data\Managed\:

目标来源说明
StudioSDK.dllbin/插件 SDK
StudioModLoader.dllbin/运行时加载器
0Harmony.dlldeps/HarmonyX 补丁引擎
MonoMod.RuntimeDetour.dlldeps/Harmony 依赖
MonoMod.Utils.dlldeps/Harmony 依赖
Mono.Cecil.dlldeps/IL 读写
Mono.Cecil.Rocks.dlldeps/Cecil 扩展
WebView2\*bin/WebView2/WebView2 弹窗宿主(6 个文件)
Updater\*bin/Updater/自动更新宿主

另外会创建 <Studio>\Mods\ 目录(已存在则跳过)。

WebView2 宿主为什么单独放一个目录

它运行在 Windows 的 .NET 上,而不是 Studio 的 Unity Mono 环境里,因此需要独立的进程宿主与配套 DLL,不能和 Unity 程序集混在一起。

安装:注入点 ​

  1. 首次安装时把 Studio.Startup.dll 备份为 Studio.Startup.dll.orig.bak(已存在则不覆盖)。
  2. 从备份读取原始程序集,定位 Studio.Startup.Services.InitializationSequenceService.Initialize()。
  3. 在该方法第一条指令之前插入 call StudioModLoader.Bootstrapper.Initialize()。
  4. 结果写入 Studio.Startup.dll.tmp → 删除原 Studio.Startup.dll → 把 .tmp 改名为 Studio.Startup.dll。

注入完成后输出:

text
Patched Studio.Startup.dll successfully!

卸载:还原清单 ​

cmd
StudioInstaller.exe --uninstall
  1. 用 Studio.Startup.dll.orig.bak 覆盖回 Studio.Startup.dll,随后删除该备份。
  2. 删除 Managed 下的 StudioModLoader.dll、StudioSDK.dll、0Harmony.dll、MonoMod.RuntimeDetour.dll、MonoMod.Utils.dll、Mono.Cecil.dll、Mono.Cecil.Rocks.dll。
  3. 删除 Managed\WebView2\ 与 Managed\Updater\ 中的文件;目录空了就一并删除。

Mods 目录保持原样

卸载不会删除 Mods 目录中的插件,也不会删除插件的配置文件与日志。需要彻底清理时手动删除即可。

目录结构(解压后的发行包) ​

text
StudioModFramework/
  StudioInstaller.exe
  StudioSDK.dll
  StudioModLoader.dll
  bin/
    StudioSDK.dll
    StudioModLoader.dll
    WebView2/          # WebView2 宿主文件
    Updater/           # 更新宿主文件
  deps/
    0Harmony.dll
    MonoMod.RuntimeDetour.dll
    MonoMod.Utils.dll
    Mono.Cecil.dll
    Mono.Cecil.Rocks.dll

排错 ​

输出原因处理
[Error] Managed folder not found目录不是 Studio 安装根目录确认目录含 Studio_Data\Managed
Framework update host is missing包不完整重新获取完整发行包
Framework WebView2 file is missingbin/WebView2/ 缺文件重新构建或重新获取完整包
Bootstrapper type not found in StudioModLoader.dllLoader 版本与安装器不匹配用同一版本构建产出的文件
InitializationSequenceService type not foundStudio 版本不匹配当前框架针对 Studio 2.0(Unity 2022.3)
安装成功但按 F10 无反应安装时 Studio 没完全退出重新运行安装器覆盖一次
[Error] Installer could not complete权限不足以管理员身份运行
[Error] --studio requires a Studio directory or Studio.exe path.--studio 后面没跟路径补上目录或 Studio.exe 路径
[Error] Invalid Studio path: <路径>--studio 指定的路径不是有效的 Studio 目录确认该目录含 Studio.exe 与 Studio_Data\Managed\Studio.Startup.dll
[Cancelled] No Studio directory selected. Use --studio <path> to specify Studio directly.菜单里选了 0,或非交互环境下没检测到 Studio用 --studio 明确指定目标
[Error] 请输入有效编号、M 或 0。菜单里输入了无法识别的字符按提示重新输入
[Error] 无效的 Studio 目录,必须包含 Studio.exe 和 Studio_Data\Managed\Studio.Startup.dll。M 手动输入的路径校验失败检查路径是否指向真正的 Studio 安装根目录

为 BrickLink Studio 2.0 打造的第三方 Mod 加载框架 · 与 BrickLink / LEGO 官方无关联