diff --git a/CHANGELOG.md b/CHANGELOG.md
index 073ff75..10c427e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,10 @@ Each entry links to the commit or pull request that introduced the change.
## [Unreleased]
+### Fixed
+
+- Microsoft Store packages now include the complete self-contained .NET application layout, preventing startup failures caused by a missing managed entry assembly. ([PR #11](https://github.com/TheBeems/CodexUsageDock/pull/11))
+
## [0.5.1] - 2026-07-16
### Changed
diff --git a/CodexUsageDock/CodexUsageDock.csproj b/CodexUsageDock/CodexUsageDock.csproj
index 6d889af..a7faeff 100644
--- a/CodexUsageDock/CodexUsageDock.csproj
+++ b/CodexUsageDock/CodexUsageDock.csproj
@@ -30,7 +30,6 @@
None
false
- false
true
@@ -107,7 +106,8 @@
- true
+
+ false
true
true
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 85c792a..b12c8da 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -118,7 +118,7 @@ The command builds from an isolated manifest copy with the four-part MSIX versio
- publisher `CN=F748B633-A4F0-42F4-B6F1-B5BDCAED8E0C`;
- x64 and ARM64 architectures;
- the complete generated asset set and its required pixel dimensions;
-- app-local .NET runtime files and, when emitted separately from the single-file bundle, self-contained `includedFrameworks` metadata;
+- the complete app-local managed application and .NET runtime layout, including self-contained `includedFrameworks` metadata;
- packaged COM and `com.microsoft.commandpalette` registrations;
- one bundle inside the final `.msixupload`.
diff --git a/scripts/build-release.ps1 b/scripts/build-release.ps1
index d2f4983..e5f5efd 100644
--- a/scripts/build-release.ps1
+++ b/scripts/build-release.ps1
@@ -358,6 +358,10 @@ function Assert-SelfContainedMsix {
try {
$requiredRuntimeEntries = @(
'CodexUsageDock.exe',
+ 'CodexUsageDock.dll',
+ 'CodexUsageDock.deps.json',
+ 'CodexUsageDock.runtimeconfig.json',
+ 'System.Private.CoreLib.dll',
'coreclr.dll',
'hostfxr.dll',
'hostpolicy.dll'
@@ -375,24 +379,20 @@ function Assert-SelfContainedMsix {
throw "MSIX is missing required Microsoft Store assets: $($missingAssetEntries -join ', ')."
}
- # A self-contained single-file publish embeds runtimeconfig.json in the app bundle.
- # If the SDK emits it as a loose file, validate that it still declares the included runtime.
$runtimeConfigEntry = $archive.GetEntry('CodexUsageDock.runtimeconfig.json')
- if ($runtimeConfigEntry) {
- $reader = [IO.StreamReader]::new($runtimeConfigEntry.Open())
- try {
- $runtimeConfig = $reader.ReadToEnd() | ConvertFrom-Json
- }
- finally {
- $reader.Dispose()
- }
+ $reader = [IO.StreamReader]::new($runtimeConfigEntry.Open())
+ try {
+ $runtimeConfig = $reader.ReadToEnd() | ConvertFrom-Json
+ }
+ finally {
+ $reader.Dispose()
+ }
- $includedFramework = @($runtimeConfig.runtimeOptions.includedFrameworks) |
- Where-Object { $_.name -eq 'Microsoft.NETCore.App' } |
- Select-Object -First 1
- if (-not $includedFramework) {
- throw 'MSIX runtimeconfig is framework-dependent; expected an included Microsoft.NETCore.App framework.'
- }
+ $includedFramework = @($runtimeConfig.runtimeOptions.includedFrameworks) |
+ Where-Object { $_.name -eq 'Microsoft.NETCore.App' } |
+ Select-Object -First 1
+ if (-not $includedFramework) {
+ throw 'MSIX runtimeconfig is framework-dependent; expected an included Microsoft.NETCore.App framework.'
}
}
finally {
diff --git a/scripts/test-integration.ps1 b/scripts/test-integration.ps1
index 1ede091..d9f10de 100644
--- a/scripts/test-integration.ps1
+++ b/scripts/test-integration.ps1
@@ -352,7 +352,10 @@ else {
}
$requiredRuntimeFiles = @(
+ 'CodexUsageDock.dll'
+ 'CodexUsageDock.deps.json'
'CodexUsageDock.runtimeconfig.json'
+ 'System.Private.CoreLib.dll'
'coreclr.dll'
'hostfxr.dll'
'hostpolicy.dll'