build: the exe is LlamaCasty.exe, and the publish script proves the artifact
Renames AssemblyName to LlamaCasty before the first Steam depot — Steamworks is explicit that renaming a live exe is painful, so this had to land first, not later. Four assembly-qualified pack URIs carried the old name, not three: MainWindow (window icon), OverlayHost (logo), RenameRecordingDialog and KeepBroadcastDialog. Pack URIs resolve by assembly name at runtime, so a stale one compiles, passes every test and then silently renders nothing the first time that view opens. AssemblyIdentityTests guards both halves — the assembly name, and no source XAML still naming the legacy assembly. Packaging/Package.appxmanifest and package-msix.sh carry the exe name too. scripts/publish.sh replaces the by-hand publish: single-file win-x64, ReadyToRun, ffmpeg beside the exe, and it refuses to finish if ffmpeg, LICENSE, PRIVACY.md or THIRD-PARTY-NOTICES.txt are missing, or if a test assembly leaked in. That last guard exists because the first publish was wrong in a way no test could see: PublishSingleFile + IncludeNativeLibrariesForSelfExtract bundled the libav*.dll family into the exe — a 9-file output with no ffmpeg folder and a 182 MB binary, so the locator would have found nothing at runtime. ExcludeFromSingleFile="true" on the content keeps the folder a folder. Diffing against a control publish without the single-file flags found it; guessing at item globs wasted two attempts first (recorded in MyMistakes.md). Measured: 127 MB exe + 129 MB ffmpeg = 257 MB depot. Tests: AssemblyIdentity, StorePackaging, BuildStamp, BundledFonts all pass; app builds with 0 warnings.
This commit is contained in:
+7
-3
@@ -28,9 +28,13 @@ dotnet publish ytLive.csproj -c Release -r win-x64 --self-contained true \
|
||||
read DLC ownership. Its absence must degrade to the free profile, never to a crash.
|
||||
- **WebView2 is the one machine dependency.** Valve's Common Redistributables configure the
|
||||
Evergreen bootstrapper as a prerequisite, so the depot declares it instead of us shipping it.
|
||||
- **`AssemblyName` is still `ytLive`** → the exe is `ytLive.exe` today. The rename to
|
||||
`LlamaCasty.exe` is queued (three pack URIs break — see `product.md`), and **must land before the
|
||||
first depot upload**, because Steam's docs are explicit that renaming a live exe is painful.
|
||||
- **`AssemblyName` is `LlamaCasty`** (renamed 2026-11-01, before the first depot because
|
||||
Steamworks warns about renaming a live exe) → the artifact is `LlamaCasty.exe` plus its
|
||||
`ffmpeg\` folder. `scripts/publish.sh` stages both and refuses to finish if either is missing.
|
||||
- **⛔ `ExcludeFromSingleFile="true"` on the ffmpeg content.** Without it, `PublishSingleFile` +
|
||||
`IncludeNativeLibrariesForSelfExtract` swallow the libav\*.dll family **into the exe** — a
|
||||
182 MB binary with no `ffmpeg\` folder beside it, so the locator finds nothing and every stream
|
||||
fails at runtime. The publish output is ~257 MB: 127 MB exe + 129 MB ffmpeg.
|
||||
- **Portable mode** (`portable.txt` → `.\data\`) survives as a feature for a copied install; it is
|
||||
not a delivery vector.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user