TASK 48 slice 2: the app packs as a Microsoft Store MSIX
The manifest the Store route needs, and a real package built from it. Packaging/Package.appxmanifest is a full-trust packagedClassicApp: EntryPoint Windows.FullTrustApplication, uap10:TrustLevel=mediumIL, uap10:RuntimeBehavior=packagedClassicApp, the rescap runFullTrust capability, and webcam + microphone DeviceCapabilities. That combination is what lets the packaged app launch the bundled ffmpeg as a child process and write to the user's profile; an appContainer package would virtualise the recordings folder instead. x64 only, en-US only (policy 10.7). Packaging/Assets/ carries the four tiles the packer requires, generated from the app's own Assets/llamacasty-logo.jpg by scripts/make-store-logos.py - listing art and app art cannot drift. scripts/package-msix.sh publishes Release win-x64 self-contained into artifacts/msix-stage (a RID-less publish would copy every RID's ONNX native), stages the manifest as AppxManifest.xml + Assets, and runs the Windows SDK's makeappx. MSIX_PFX/MSIX_PFX_PASSWORD sign a package for a local test install; the Store signs submissions. artifacts/ is gitignored. First real package: artifacts/LlamaCasty.msix, 159 MB, 509 files, 'Package creation succeeded'. Schema traps found by packing (makeappx reports one error at a time): Square310x310Logo and Wide310x150Logo are NOT uap:VisualElements attributes - they live on uap:DefaultTile. Guard: StorePackagingTests.The_package_manifest_declares_full_trust_camera_and_ microphone - identity/architecture, the full-trust application element, the three capabilities, no appContainer VALUE (not the file text: the manifest's own comment says the word), en-US only, and every referenced logo present. Full suite 438/438, 0 warnings. Cold-start smoke test after the Velopack removal: MainWindow loaded, no exceptions.
This commit is contained in:
+15
-4
@@ -77,6 +77,17 @@
|
||||
unchanged; the seams are two `internal` properties). Guard:
|
||||
`ytLive.Tests/AppLogRotationTests.cs`. Slices 2 (temp alert-clip cleanup) and 3 (low-disk
|
||||
guard before recording) are still open.
|
||||
- **TASK 48 slice 2 — the app PACKS as a Store MSIX (shipped 2026-10-22).** `Packaging/Package.appxmanifest`
|
||||
(full trust: `Windows.FullTrustApplication` + `uap10:TrustLevel=mediumIL` +
|
||||
`uap10:RuntimeBehavior=packagedClassicApp` + `rescap runFullTrust`, plus webcam/microphone
|
||||
`DeviceCapability`s, x64, en-US only) + `Packaging/Assets/` (four logo tiles generated from the
|
||||
app's own artwork by `scripts/make-store-logos.py`) + `scripts/package-msix.sh` (publish
|
||||
`Release -r win-x64 --self-contained` → stage → `makeappx pack`, optional `MSIX_PFX` signing).
|
||||
**First real package built: `artifacts/LlamaCasty.msix`, 159 MB, 509 files, `Package creation
|
||||
succeeded`** (`artifacts/` is gitignored). Guard:
|
||||
`StorePackagingTests.The_package_manifest_declares_full_trust_camera_and_microphone`.
|
||||
⚠️ Before submission the manifest's `Identity/@Publisher` and `PublisherDisplayName` must be
|
||||
set to the exact values Partner Center shows — a mismatch is a rejection.
|
||||
- **TASK 48 slice 3 — the self-updater is gone (shipped 2026-10-22).** The Store route (creator
|
||||
ruling 2026-09-27) means the Store updates the app, so the Velopack package + bootstrap were
|
||||
**deleted** (`ytLive.csproj`, `App.xaml.cs`) — a compliance action, not cleanup: the updater
|
||||
@@ -280,10 +291,10 @@ Zombie entities deleted from the registry: `script.leak_strobe`, `script.doorbel
|
||||
Galaxy `cef.log` at 2.7 GB is NOT ours.)
|
||||
|
||||
## Tests
|
||||
- Last full run: **437/437 passed, 0 warnings** (2026-10-22 — after TASK 48 slice 3's
|
||||
`StorePackagingTests`; the run before was 436/436 after TASK 55 slice 1's
|
||||
`AppLogRotationTests`, and the one before that 435/435 after TASK 63). The one failure seen
|
||||
earlier in the
|
||||
- Last full run: **438/438 passed, 0 warnings** (2026-10-22 — after TASK 48 slice 2's
|
||||
manifest guard; the run before was 437/437 after slice 3's `StorePackagingTests`, then
|
||||
436/436 after TASK 55 slice 1's `AppLogRotationTests` and 435/435 after TASK 63). The one
|
||||
failure seen earlier in the
|
||||
session was `LayerReorderPersistenceTests.RealMouseDrag_OnTheLayerList_PersistsTheReorder`,
|
||||
which **passes in isolation** (re-run: 3/3) — the known real-mouse flake, not a regression.
|
||||
- Known flaky-by-environment (all pass in isolation): `AudioPipelineTests.Mix_HonorsProviderGains…`,
|
||||
|
||||
Reference in New Issue
Block a user