RSTGameTranslation构建与发布完整指南:游戏实时翻译工具的自包含打包、代码签名与杀毒误报规避实践
【免费下载链接】RSTGameTranslation Real-time Game Translation Tool | OCR AI Translation | Windows Gaming | Open Source项目地址https://gitcode.com/gh_mirrors/rs/RSTGameTranslation点击查看免费下载RSTGameTranslation 是一款开源的游戏实时翻译工具基于 OCR 屏幕识别 AI 翻译把游戏画面上的文字甚至语音实时翻译成中文并覆盖显示。本文面向希望自行构建、打包发布该工具的开发者与进阶用户完整拆解它的构建与发布流程如何用 .NET 自包含Self-Contained方式产出免安装包的 win-x64 发布包、为什么刻意放弃单文件模式、如何通过代码签名与构建参数规避杀毒软件误报以及版本号是如何在整个项目中保持同步的。一、发布前置一份免安装的构建产物打开项目文件 RST.csproj 可以看到核心构建配置RuntimeIdentifierwin-x64/RuntimeIdentifier目标平台固定为 Windows x64SelfContainedtrue/SelfContained自包含发布把 .NET 运行时一起打进发布目录用户无需安装 .NET SDK 即可直接运行rst.exePublishSingleFilefalse/PublishSingleFile明确关闭单文件模式原因见下文第三节自包含模式的代价是体积运行时 DLL 会全部随包发布但对游戏翻译工具这类面向普通玩家的桌面应用来说解压即玩远比包体积重要。另外 app.manifest 声明了requireAdministrator权限和 PerMonitorV2 高 DPI 感知——前者用于屏幕捕获与覆盖层渲染后者保证翻译覆盖层在多显示器混用缩放比时不模糊。二、一键发布脚本MakeReleaseZip.bat 全流程拆解项目的发布入口是 MakeReleaseZip.bat在 Windows 上依次完成 6 个步骤前置依赖.NET 9 SDK、Node.js、7-Zip步骤命令/操作作用1. 同步版本号node update-version.js从 media/latest_version_checker.json 读取最新版本号写回英文/越南语落地页的版本徽章2. 清理旧产物dotnet clean RST.sln --configuration Release避免残留文件混入发布包3. 自包含发布dotnet publish .\RST.csproj -c Release -r win-x64 --self-contained true产出app\win-x64\publish目录4. 组装目录robocopy复制到tempbuild并复制 README整理最终目录结构5. 补齐模型与语言包复制 OneOcr、ggml-tiny.bin语音模型、Languages\语言文件保证 OCR 与语音识别开箱即用6. 打包压缩7z a -r -tzip生成 zip并把根目录重命名为RSTGameTranslation产出发布 zip其中第 5 步有几个值得注意的细节AudioModel\ggml-tiny.bin语音转文字的 ggml 小模型发布时预置用户无需首次启动再下载Supertonic目录只预创建空目录约 400 MB 的 TTS 模型由应用内一键下载器按需拉取onnxruntime.dll的保真复制MakeReleaseZip.bat#L33-L35脚本刻意用发布目录里 NuGet 带的 OnnxRuntime 运行时覆盖旧文件并删除.lib文件。注释里写明原因——OneOCR 的oneocr.dll与 Supertonic TTS 依赖同一个 Microsoft.ML.OnnxRuntime 1.20.1若混用不同版本的托管封装层与原生运行时应用会在启动时静默崩溃。三、为什么放弃单文件模式一个 190 MB 的坑MakeReleaseZip.bat#L11-L16 的注释记录了一次真实的踩坑经历这也是构建发布中很有参考价值的一课开启PublishSingleFiletrue后包括Microsoft.ML.OnnxRuntime.dll在内的托管程序集会被捆绑进单个rst.exe约 190 MB。此时 ONNX Runtime 的原生加载器路径不可靠当用户配置tts_serviceSupertonic时应用在首次启动即崩溃。最终决策是保持默认的多文件自包含发布让所有 DLL 与rst.exe并排放置——这正是日常dotnet build输出目录下已被验证可靠的布局。经验总结单文件模式对含原生依赖ONNX、CUDA 等的应用并不总是安全的能跑的多文件优先于好看的文件数。四、规避杀毒误报构建层面的四个关键设置未签名的屏幕捕获类工具是杀毒软件启发式查杀的重灾区。项目在 RST.csproj#L33-L53 中针对误报做了四组工程化处理补全程序集元数据RST.csproj#L34-L42 填充Company、Product、Authors、Description、Copyright等字段。带有完整身份信息二进制的路人感更低有助于杀软启发式规则判定其合法性。确定性构建Deterministictrue/Deterministic 相同源码永远产出完全一致的二进制。这意味着社区可以长期积累对同一构建的信任如安全社区白名单新版本哈希可复现、可验证。附带 PDB 调试信息DebugTypeportable/DebugType 注释直接写道AV engines trust binaries with debug info——带调试信息的二进制更容易被杀软识别为正规开发产物。注意这里用portable而非embedded因为 CsWinRT 的 IIDOptimizer 需要独立的 PDB 文件。关闭 IL 裁剪PublishTrimmedfalse/PublishTrimmed 裁剪后的程序集结构异常是触发杀软启发式误报的常见因素项目选择放弃少量体积换取更低的误报率。五、代码签名用 SignPath 让 Windows 不再拦路即使做了上述构建优化未签名程序首次运行仍会触发 Windows SmartScreen 的未识别的应用提示。RSTGameTranslation 的解决方案是使用 SignPath.io 提供的免费代码签名服务证书由 SignPath Foundation 签发在 README.md 致谢部分有注明。代码签名对玩家的实际价值️ 显著降低 SmartScreen 拦截概率 Windows Defender 等杀软会直接信任已签名发布方的历史信誉 配合确定性构建签名还能保证你下载到的文件与开发者发布的完全一致六、版本号同步机制一个 JSON 驱动三处更新发布流程中的版本管理值得单独说明整个项目用一份 media/latest_version_checker.json 作为单一事实来源{ name: Real Time Game Translation, latest_version: 6.1, message: Download V{VERSION_STRING} now from github? }它驱动三个位置保持同步落地页update-version.js 读取 JSON 中的latest_version用正则更新 index.html 与 index_vi.html 中的版本徽章英文Version x.x与越南语Phiên bản x.x双份文案应用内版本检测src/SplashManager.cs#L40-L46 中CurrentVersion常量记录当前版本启动画面会加载该 JSON 远程文件比对发现新版本即提示用户前往 Releases 页下载发布包文件名MakeReleaseZip.bat 顶部APP_VERSION6.1决定最终 zip 命名RSTGameTranslation_v6.1.zip一个小的版本格式化细节src/SplashManager.cs#L42-L45热修复版本如 5.85 若用F1格式化会被四舍五入成 5.8导致更新检查下载回旧版本的 bug因此改用0.0#格式保留必要的第二位小数——这是构建发布流程中一个极易踩、又极难排查的版本管理陷阱。总结RSTGameTranslation 的构建发布实践可以浓缩为五条经验自包含多文件发布优先于单文件——原生依赖ONNX Runtime会打破单文件加载路径发布脚本化clean → publish → 组装模型/语言资源 → 7z 打包一条 bat 跑完用程序集元数据 确定性构建 PDB 关闭 IL 裁剪四板斧压低杀软误报代码签名SignPath 免费签名是消除 SmartScreen 警告的最后一块拼图单一 JSON 驱动落地页、应用内更新检查与包名三处版本号避免改一处漏两处按照 MakeReleaseZip.bat 的流程任何一台装有 .NET 9 SDK 与 7-Zip 的 Windows 机器都能在几分钟内复现出与官方一致的发布包。赞分享【免费下载链接】RSTGameTranslation Real-time Game Translation Tool | OCR AI Translation | Windows Gaming | Open Source项目地址https://gitcode.com/gh_mirrors/rs/RSTGameTranslation点击查看免费下载相关推荐从零构建 my-translator 实时语音翻译应用Tauri 源码构建、macOS 签名公证、Windows 打包与自动更新完整指南从零构建 my translator 实时语音翻译应用Tauri 源码构建、macOS 签名公证、Windows 打包与自动更新完整指南 my translaiSH打包发布终极指南IPA生成与代码签名最佳实践iSH打包发布终极指南IPA生成与代码签名最佳实践 iSH是一款为iOS设备提供Linux shell环境的开源项目让用户能够在iPhone或iPad上运行操作系统虚拟化JIT编译Electron 应用分发完整指南打包、代码签名、商店发布与自动更新Electron 应用分发完整指南打包、代码签名、商店发布与自动更新 应用进入生产就绪状态后在真正交付给用户之前还需要走完一条完整的发行链路将应用资桌面应用跨平台上一篇Isaac Lab 快速入门3 步跑通机器人强化学习仿真下一篇量子机器学习与LeetCode量子计算与AI融合的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考