From d6e2740d977fada69168dd47037eb05a36ac373e Mon Sep 17 00:00:00 2001 From: Nick Nissen Date: Tue, 2 Jun 2026 07:56:19 +0200 Subject: [PATCH 1/2] Remove vendored Command Palette SDK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the committed tools/cmdpal-sdk DLL/winmd and the build-msix.ps1 override that swapped them into the package. Build against the plain NuGet Microsoft.CommandPalette.Extensions package instead. The override was assumed to be load-bearing for WinRT IID matching, but the IIDs in the NuGet package already match the CmdPal host. What the override actually provided was Microsoft.CommandPalette.Extensions.winmd in the package — the host builds the cross-process IExtension proxy from that metadata, and without it activation fails with E_NOINTERFACE and the extension loads with no commands. The SDK package marks the winmd CopyToOutputDirectory but not CopyToPublishDirectory, so dotnet publish drops it. Add the IncludeCmdPalSdkWinmdInPublish target to force it into the publish output. --- .../HomeAssistantCommandPalette.csproj | 19 +++++++- HomeAssistantCommandPalette/build-msix.ps1 | 27 ++--------- .../Microsoft.CommandPalette.Extensions.dll | Bin 46664 -> 0 bytes .../Microsoft.CommandPalette.Extensions.winmd | Bin 13312 -> 0 bytes tools/cmdpal-sdk/README.md | 45 ------------------ 5 files changed, 22 insertions(+), 69 deletions(-) delete mode 100644 tools/cmdpal-sdk/Microsoft.CommandPalette.Extensions.dll delete mode 100644 tools/cmdpal-sdk/Microsoft.CommandPalette.Extensions.winmd delete mode 100644 tools/cmdpal-sdk/README.md diff --git a/HomeAssistantCommandPalette/HomeAssistantCommandPalette.csproj b/HomeAssistantCommandPalette/HomeAssistantCommandPalette.csproj index ccd42a7..ebe1e61 100644 --- a/HomeAssistantCommandPalette/HomeAssistantCommandPalette.csproj +++ b/HomeAssistantCommandPalette/HomeAssistantCommandPalette.csproj @@ -77,7 +77,7 @@ - + @@ -115,4 +115,21 @@ true false + + + + + + Microsoft.CommandPalette.Extensions.winmd + PreserveNewest + + + diff --git a/HomeAssistantCommandPalette/build-msix.ps1 b/HomeAssistantCommandPalette/build-msix.ps1 index 0ff5bc5..c35a73e 100644 --- a/HomeAssistantCommandPalette/build-msix.ps1 +++ b/HomeAssistantCommandPalette/build-msix.ps1 @@ -12,11 +12,8 @@ Steps per platform: 1. dotnet publish with WindowsPackageType=MSIX 2. Stage publish output, patch AppxManifest (Version, ProcessorArchitecture, Publisher) - 3. Override Microsoft.CommandPalette.Extensions.dll/winmd with the - vendored copy from tools/cmdpal-sdk (NuGet WinRT IIDs don't match - what CmdPal expects) - 4. makeappx pack -> .msix - 5. (optional) signtool sign with PFX cert + 3. makeappx pack -> .msix + 4. (optional) signtool sign with PFX cert #> param( [Parameter(Mandatory = $true)] @@ -52,7 +49,6 @@ $ExtensionName = "HomeAssistantCommandPalette" $ProjectDir = $PSScriptRoot $RepoRoot = Split-Path -Parent $ProjectDir $ProjectFile = Join-Path $ProjectDir "$ExtensionName.csproj" -$VendorSdkDir = Join-Path $RepoRoot "tools\cmdpal-sdk" if (-not $OutputDir) { $OutputDir = Join-Path $ProjectDir "bin\Release\msix" } New-Item -Path $OutputDir -ItemType Directory -Force | Out-Null @@ -74,13 +70,6 @@ foreach ($t in @($makeappx, $signtool)) { } Write-Host "SDK bin: $($sdkBin.FullName)" -ForegroundColor Yellow -# ---------- Validate vendored SDK ---------- -foreach ($f in @("Microsoft.CommandPalette.Extensions.dll", "Microsoft.CommandPalette.Extensions.winmd")) { - if (-not (Test-Path (Join-Path $VendorSdkDir $f))) { - throw "Missing vendored SDK file: $f. See tools/cmdpal-sdk/README.md." - } -} - # ---------- Resolve PFX once if provided ---------- $signingPfx = $null if ($CertBase64) { @@ -149,14 +138,6 @@ try { Remove-Item (Join-Path $stagingDir "Package.appxmanifest") -ErrorAction SilentlyContinue - # ---------- 3. Override SDK DLL/winmd with vendored copy ---------- - # NuGet 0.9.260303001 IIDs don't match CmdPal's internal 0.9.260326002 — - # cast to (ICommandProvider) fails silently without this override. - Copy-Item (Join-Path $VendorSdkDir "Microsoft.CommandPalette.Extensions.dll") ` - (Join-Path $stagingDir "Microsoft.CommandPalette.Extensions.dll") -Force - Copy-Item (Join-Path $VendorSdkDir "Microsoft.CommandPalette.Extensions.winmd") ` - (Join-Path $stagingDir "Microsoft.CommandPalette.Extensions.winmd") -Force - New-Item -ItemType Directory -Path (Join-Path $stagingDir "Public") -Force | Out-Null foreach ($strip in @("build-exe.ps1", "setup-template.iss", "build-msix.ps1", "*.pdb", "app.manifest")) { @@ -166,7 +147,7 @@ try { $appPackagesNested = Join-Path $stagingDir "AppPackages" if (Test-Path $appPackagesNested) { Remove-Item $appPackagesNested -Recurse -Force } - # ---------- 4. makeappx pack ---------- + # ---------- 3. makeappx pack ---------- $msixName = "${ExtensionName}_${Version}.0_${Platform}.msix" $msixPath = Join-Path $OutputDir $msixName Remove-Item $msixPath -Force -ErrorAction SilentlyContinue @@ -174,7 +155,7 @@ try { & $makeappx pack /d $stagingDir /p $msixPath /nv /o if ($LASTEXITCODE -ne 0) { throw "makeappx pack failed for $Platform (exit $LASTEXITCODE)" } - # ---------- 5. Optional signing ---------- + # ---------- 4. Optional signing ---------- if ($signingPfx) { Write-Host "Signing $msixName" -ForegroundColor Yellow $signArgs = @('sign', '/fd', 'SHA256', '/f', $signingPfx) diff --git a/tools/cmdpal-sdk/Microsoft.CommandPalette.Extensions.dll b/tools/cmdpal-sdk/Microsoft.CommandPalette.Extensions.dll deleted file mode 100644 index 69a621034ccc88019ed321b95d56fd706475964e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46664 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 Date: Tue, 2 Jun 2026 08:28:13 +0200 Subject: [PATCH 2/2] Drop now-unused $RepoRoot variable from build-msix.ps1 --- HomeAssistantCommandPalette/build-msix.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/HomeAssistantCommandPalette/build-msix.ps1 b/HomeAssistantCommandPalette/build-msix.ps1 index c35a73e..0752f37 100644 --- a/HomeAssistantCommandPalette/build-msix.ps1 +++ b/HomeAssistantCommandPalette/build-msix.ps1 @@ -47,7 +47,6 @@ $ErrorActionPreference = "Stop" $ExtensionName = "HomeAssistantCommandPalette" $ProjectDir = $PSScriptRoot -$RepoRoot = Split-Path -Parent $ProjectDir $ProjectFile = Join-Path $ProjectDir "$ExtensionName.csproj" if (-not $OutputDir) { $OutputDir = Join-Path $ProjectDir "bin\Release\msix" }