Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions CodexUsageDock/CodexUsageDock.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
<PropertyGroup Condition="'$(DistributionMode)'=='Installer'">
<WindowsPackageType>None</WindowsPackageType>
<EnableMsixTooling>false</EnableMsixTooling>
<PublishSingleFile>false</PublishSingleFile>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>

Expand Down Expand Up @@ -107,7 +106,8 @@
</PropertyGroup>

<PropertyGroup>
<PublishSingleFile>true</PublishSingleFile>
<!-- MSIX already provides one installation unit; keep the app-local .NET layout explicit and verifiable. -->
<PublishSingleFile>false</PublishSingleFile>
<IsAotCompatible>true</IsAotCompatible>

<CsWinRTAotOptimizerEnabled>true</CsWinRTAotOptimizerEnabled>
Expand Down
2 changes: 1 addition & 1 deletion DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

Expand Down
32 changes: 16 additions & 16 deletions scripts/build-release.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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 {
Expand Down
3 changes: 3 additions & 0 deletions scripts/test-integration.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,10 @@ else {
}

$requiredRuntimeFiles = @(
'CodexUsageDock.dll'
'CodexUsageDock.deps.json'
'CodexUsageDock.runtimeconfig.json'
'System.Private.CoreLib.dll'
'coreclr.dll'
'hostfxr.dll'
'hostpolicy.dll'
Expand Down
Loading