Files
LlamaCasty/Packaging/Package.appxmanifest
T
gramps abfab25685 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.
2026-11-01 07:01:50 -08:00

79 lines
3.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
LlamaCasty — Microsoft Store MSIX manifest (TASK 48).
Full trust is the whole point of this file: the app records to the user's profile,
launches the bundled ffmpeg as a CHILD PROCESS, opens an ordinary Win32 folder picker,
and drives WebView2. None of that works in an AppContainer, so this is a
packagedClassicApp at mediumIL with the runFullTrust restricted capability.
⛔ Do NOT change this to appContainer: recording silently starts writing to a
per-package virtualised folder and the output "vanishes" (TASK 48 item 6).
⚠️ Before submission, replace Publisher with the exact Publisher value Partner Center
shows for the account, and PublisherDisplayName with its display name — a mismatch is
a certification rejection. The version is bumped per submission.
-->
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap uap10 rescap">
<Identity
Name="LlamaCasty"
Publisher="CN=LlamaCasty"
Version="1.0.0.0"
ProcessorArchitecture="x64" />
<Properties>
<DisplayName>LlamaCasty</DisplayName>
<PublisherDisplayName>LlamaCasty</PublisherDisplayName>
<Description>Live streaming to YouTube: scenes, sources, a webcam with background effects, alerts, chat and recording.</Description>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily
Name="Windows.Desktop"
MinVersion="10.0.19041.0"
MaxVersionTested="10.0.26100.0" />
</Dependencies>
<!-- English only (Store policy 10.7): a second language here means the listing
description must be localised into it too. -->
<Resources>
<Resource Language="en-US" />
</Resources>
<Applications>
<Application
Id="LlamaCasty"
Executable="LlamaCasty.exe"
EntryPoint="Windows.FullTrustApplication"
uap10:TrustLevel="mediumIL"
uap10:RuntimeBehavior="packagedClassicApp">
<uap:VisualElements
DisplayName="LlamaCasty"
Description="Live streaming to YouTube: scenes, sources, a webcam with background effects, alerts, chat and recording."
BackgroundColor="#171928"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png">
<!-- The wide and 310 tiles live on DefaultTile, not on VisualElements — the
Windows 10 uap:VisualElements schema has no such attributes. -->
<uap:DefaultTile
Wide310x150Logo="Assets\Wide310x150Logo.png"
Square310x310Logo="Assets\Square310x310Logo.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
<DeviceCapability Name="webcam" />
<DeviceCapability Name="microphone" />
</Capabilities>
</Package>