从源码构建
仓库
bash
git clone https://github.com/TYWStudio/TML.git
cd TML四个平台的工程是并列的:
text
TYW Launcher/ Windows(VB.NET + WPF,.NET Framework 4.8)
TYWLauncher-Linux/ Linux(C# + Avalonia,.NET 8)
TYWLauncher-macOS/ macOS(与 Linux 同源)
TYWLauncher-Android/ Android(Kotlin)
PCLCS/ 公共组件
extensions/ 拓展 SDK、示例、打包脚本Windows
需要 Visual Studio 2022/2026(含 .NET 桌面开发)或 Build Tools。
bash
# 解决方案级构建
msbuild "TYW Launcher.sln" /t:Restore /p:Configuration=Release /m:1
msbuild "TYW Launcher.sln" /t:Build /p:Configuration=Release /m或者用仓库的脚本(会自动注入 / 还原服务端地址):
bash
python _deploy/build.py Release Snapshot Debug三个配置对应三个通道:
| 配置 | 通道 | 编译常量 |
|---|---|---|
| Release | 正式版 | RELEASE |
| Snapshot | 快照版 | (不定义) |
| Debug | 内测版 | BETA |
产物统一叫 TYW Launcher.exe,在 TYW Launcher/bin/<配置>/。
改过 XAML 页面后
删掉 obj/Debug、obj/Release、obj/Snapshot 再编,否则会报 MC1000 未能找到 xxx.xaml(残留的 baml 清单)。
Linux
bash
cd TYWLauncher-Linux
dotnet publish src/TYW.Desktop -c Release -r linux-x64 --self-contained true \
-p:TYWChannel=Release -o out/linux-x64-r linux-arm64出 arm64 包。-p:TYWChannel=Release|Snapshot|Beta选通道。- 产物统一名
TYWLauncher。
服务器分发包命名约定(老客户端按名字找):
text
TYWLauncher-linux-x64.tar.gz
TYWLauncher-linux-x64-snapshot.tar.gz
TYWLauncher-linux-x64-beta.tar.gz
TYWLauncher-linux-arm64.tar.gz
…macOS
bash
cd TYWLauncher-macOS
./packaging/build-macos.sh 1.1.37 arm64产物:
TYWLauncher-macos-arm64.zip、.dmg。dmg 只能在 macOS 上用
hdiutil生成,Windows 交叉编译只出 zip。Apple Silicon 必须 ad-hoc 签名,否则 M 系列直接拒绝运行:
bashcodesign --force --deep --sign - "TYW Launcher.app"
正式发布建议走 CI(.github/workflows/build-macos.yml,macos-14 双架构),里面有签名步骤。
Android
bash
cd TYWLauncher-Android
./gradlew assembleRelease产物在 app/build/outputs/apk/release/。CI 见 .github/workflows/build-android.yml。
拓展
bash
python extensions/pack.py extensions/examples/hello-go -o dist/hello-go.zip
cargo build --release --manifest-path extensions/sdk/rust/Cargo.toml
go build ./extensions/sdk/goCI:.github/workflows/extensions.yml,会跑 Go / Rust 示例的 smoke 测试。
服务端
服务端不在本仓库里,源码不公开、也不提供构建方式,需要自行实现,见注意说明。
服务端地址注入
开源构建不写入任何地址,解析顺序:
text
设置项 ServerUrl
> 环境变量 TYW_SERVER
> 程序/数据目录的 server.txt
> 编译期常量 BuiltInServerAddress(默认空)官方发版时:
bash
export TYW_SERVER_URL=https://your-server/
python _deploy/build.py Release Snapshot Debug_deploy/build.py 会在编译前改 ModSecret.vb、编完自动还原,仓库里始终保持空地址。
常见构建问题
| 现象 | 处理 |
|---|---|
MC1000 未能找到 xxx.xaml | 清 obj/* 重编 |
MSB3027 / MSB3021 文件被占用 | 关掉正在运行的启动器,或用 OUTDIR 换输出目录 |
| NuGet 还原失败 | dotnet nuget locals all --clear 后重试 |
Linux 上 NuGet.targets path1 null | 导出 SystemRoot、ProgramFiles、TEMP、NUGET_PACKAGES |
| macOS 包在 M 系列闪退 | 没签名,codesign -s - 重签 |
