Skip to content

从源码构建 ​

仓库 ​

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 系列直接拒绝运行:

    bash
    codesign --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/go

CI:.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 - 重签