From 572898b00e844fc8b6ab5c71c98a878a5abe8e84 Mon Sep 17 00:00:00 2001 From: Giuseppe Imperato Date: Sat, 2 May 2026 00:59:23 +0200 Subject: [PATCH] fix: publish PassKey.Desktop as truly self-contained (bundle .NET 10 runtime) publish.ps1 was missing -r win-$Arch --self-contained true for the Desktop project. WindowsAppSDKSelfContained=true only bundles the Windows App SDK/WinUI 3 components, not the .NET base runtime. The generated runtimeconfig.json had "framework" (framework- dependent) instead of "includedFrameworks" (self-contained), causing the error: "You must install or update .NET to run this application. Required: Microsoft.NETCore.App, version 10.0.0 (x64)" Add -r win-$Arch --self-contained true to the Desktop publish command (same pattern already used for BrowserHost). The runtimeconfig.json now contains "includedFrameworks" confirming the .NET 10.0.7 runtime is bundled. Users no longer need to install .NET. Also bumps version to 1.0.7 and updates CHANGELOG/README/Installer accordingly. Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 10 ++++++- Installer/PassKey.iss | 4 +-- README.md | 4 +-- publish.ps1 | 33 ++++++++++++++++++++++ src/PassKey.Desktop/PassKey.Desktop.csproj | 6 ++-- 5 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 publish.ps1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ce5028..5831353 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.0.7] - 2026-05-02 + +### Fixed +- PassKey.Desktop is now published as a truly self-contained executable: the .NET 10 runtime is + bundled inside the installer and the portable ZIP. Users no longer need to install .NET separately. + The README claim "No .NET runtime required" is now accurate. + ## [1.0.6] - 2026-05-01 ### Changed @@ -110,7 +117,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Giuseppe Imperato** — concept, design, product decisions - **[Claude](https://www.anthropic.com/claude) by Anthropic** — architecture, implementation, documentation -[Unreleased]: https://github.com/pexatar/PassKey/compare/v1.0.6...HEAD +[Unreleased]: https://github.com/pexatar/PassKey/compare/v1.0.7...HEAD +[1.0.7]: https://github.com/pexatar/PassKey/compare/v1.0.6...v1.0.7 [1.0.6]: https://github.com/pexatar/PassKey/compare/v1.0.5...v1.0.6 [1.0.5]: https://github.com/pexatar/PassKey/compare/v1.0.0...v1.0.5 [1.0.0]: https://github.com/pexatar/PassKey/releases/tag/v1.0.0 diff --git a/Installer/PassKey.iss b/Installer/PassKey.iss index 3bd1dc4..4436142 100644 --- a/Installer/PassKey.iss +++ b/Installer/PassKey.iss @@ -4,8 +4,8 @@ [Setup] AppId={{A7F3C2D1-8E4B-4F9A-B6D5-3C1E7A2F0D84} AppName=PassKey -AppVersion=1.0.6 -AppVerName=PassKey 1.0.6 +AppVersion=1.0.7 +AppVerName=PassKey 1.0.7 AppPublisher=Giuseppe Imperato AppPublisherURL=https://github.com/pexatar/PassKey AppSupportURL=https://github.com/pexatar/PassKey/issues diff --git a/README.md b/README.md index f746a3a..2967e84 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ PassKey stores your passwords, credit cards, identities, and secure notes in a l | Version | Platform | Type | |---------|----------|------| -| [v1.0.6](https://github.com/pexatar/PassKey/releases/tag/v1.0.6) | Windows x64 | Installer EXE | -| [v1.0.6](https://github.com/pexatar/PassKey/releases/tag/v1.0.6) | Windows x64 | Portable ZIP | +| [v1.0.7](https://github.com/pexatar/PassKey/releases/tag/v1.0.7) | Windows x64 | Installer EXE | +| [v1.0.7](https://github.com/pexatar/PassKey/releases/tag/v1.0.7) | Windows x64 | Portable ZIP | > **Requirements:** Windows 10 version 1809 (build 17763) or later, x64 processor. > No .NET runtime required — PassKey is fully self-contained. diff --git a/publish.ps1 b/publish.ps1 new file mode 100644 index 0000000..272355d --- /dev/null +++ b/publish.ps1 @@ -0,0 +1,33 @@ +param( + [string]$Arch = "x64", # x64 | arm64 + [string]$Config = "Release", + [string]$OutDir = "" +) + +if ($OutDir -eq "") { $OutDir = "dist\$Arch" } + +$ErrorActionPreference = "Stop" +$root = $PSScriptRoot + +Write-Host "=== PassKey Publish — $Arch $Config ===" -ForegroundColor Cyan + +# 1. Publish BrowserHost (self-contained, single file) +Write-Host "`n[1/2] Publishing BrowserHost..." -ForegroundColor Yellow +dotnet publish "$root\src\PassKey.BrowserHost\PassKey.BrowserHost.csproj" ` + -c $Config -r "win-$Arch" --self-contained true -p:PublishSingleFile=true ` + -o "$root\$OutDir" --verbosity quiet +if ($LASTEXITCODE -ne 0) { throw "BrowserHost publish failed (exit $LASTEXITCODE)" } + +# 2. Publish Desktop (self-contained: bundles both WindowsAppSDK and .NET runtime) +Write-Host "`n[2/2] Publishing Desktop..." -ForegroundColor Yellow +$platformArg = if ($Arch -eq "arm64") { "ARM64" } else { "x64" } +dotnet publish "$root\src\PassKey.Desktop\PassKey.Desktop.csproj" ` + -c $Config -r "win-$Arch" --self-contained true -p:Platform=$platformArg ` + -o "$root\$OutDir" --verbosity quiet +if ($LASTEXITCODE -ne 0) { throw "Desktop publish failed (exit $LASTEXITCODE)" } + +Write-Host "`n=== Done ===" -ForegroundColor Green +Write-Host "Output: $root\$OutDir" +Get-ChildItem "$root\$OutDir\PassKey*" -ErrorAction SilentlyContinue | + Select-Object Name, @{N="Size (KB)"; E={[math]::Round($_.Length/1KB,1)}} | + Format-Table -AutoSize diff --git a/src/PassKey.Desktop/PassKey.Desktop.csproj b/src/PassKey.Desktop/PassKey.Desktop.csproj index 030a2b6..eab9afb 100644 --- a/src/PassKey.Desktop/PassKey.Desktop.csproj +++ b/src/PassKey.Desktop/PassKey.Desktop.csproj @@ -15,9 +15,9 @@ true false PassKey.Desktop - 1.0.6 - 1.0.6.0 - 1.0.6.0 + 1.0.7 + 1.0.7.0 + 1.0.7.0 app.manifest Assets\PassKey.ico DISABLE_XAML_GENERATED_MAIN