外观
Installer 概览
StudioInstaller.exe 负责把框架装进 Studio 2.0。它是一个控制台程序,做两件事:
- 部署运行时文件 —— 把 Loader、SDK 及其依赖复制到 Studio 的
Managed目录。 - 注入引导入口 —— 用 Cecil 改写
Studio.Startup.dll,让 Loader 能在 Studio 启动时被执行。
只做第一件事是不够的:Managed 目录里放再多 DLL,Studio 也不会主动去加载它们。注入才是让框架生效的关键一步,这也是安装器不能用「手动拷贝文件」替代的原因。
设计要点
| 特性 | 说明 |
|---|---|
| 自动定位 | 扫描 Program Files / Program Files (x86) 并列出编号供选择;也可按 M 手动输入路径或打开文件选择窗口,0 取消 |
| 路径直给 | --studio <目录或 Studio.exe> 跳过选择菜单,适合脚本与 CI |
| 有效性校验 | 目标目录必须同时含 Studio.exe 与 Studio_Data\Managed\Studio.Startup.dll |
| 完整包检查 | 缺少 WebView2 宿主或更新宿主时直接报错中止,不产生半成品安装 |
| 备份不覆盖 | Studio.Startup.dll.orig.bak 只在首次创建,重装不会污染原始备份 |
| 原子替换 | 改写结果先写入 .tmp,成功后再删除原文件并改名,避免留下损坏的 DLL |
| 可完整回滚 | 卸载时按备份还原并清理所有部署文件 |
运行形态
[STAThread]主入口——因为它需要弹出 Win32 文件选择对话框。- 自带程序集解析:启动时从
deps/、自身目录、../deps/查找Mono.Cecil等依赖,所以解压后直接运行即可,不需要额外的运行库安装。 - 默认行为是安装;带参数时按参数执行(
--install/--status/--uninstall)。 - 找不到 Studio 时不再直接弹窗,而是进入选择菜单(编号 /
M手动 /0取消),重定向环境下则取第一个自动识别结果。