CCT can also ship as an MSIX package for the Microsoft Store (#5). The Store signs it and keeps
it updated, so its users get no SmartScreen warning. The portable .exe and zip on GitHub
Releases stay as they are.
AppxManifest.xml: a full-trust desktop app (runFullTrust) with one startup task.build-msix.ps1: packstarget\release\claude-codex-taskbar.exewith the logos (drawn fromres\app.ico) and the manifest (version fromCargo.toml), usingmakeappxfrom the Windows SDK.
- Start with Windows uses the package's startup task (
CCTStartup) instead of the Run key, which packaged apps ignore. CCT finds out at runtime (src/packaged.rs); the menu item and the Settings switch work the same. If you turn it off in Task Manager or Settings → Apps → Startup, only you can turn it back on there. - Settings stay in
%APPDATA%\claude-codex-taskbar\. As Microsoft documents for packaged apps (Windows 10 1903 and later), files that already exist there, such as those of a portable install, are used and updated in place. Files the package creates are kept per package and removed when it is uninstalled. - The Claude Code and Codex logins live outside
AppData, so the package reads them, and the account switcher writes the Claude one, exactly as the portable.exedoes.
Don't run the portable .exe and the package at the same time, and turn on Start with Windows
in only one of them.
On Windows 10/11 with the Windows SDK:
cargo build --release
pwsh packaging\build-msix.ps1 -Sign-Sign creates a self-signed certificate for CN=CCT Local Test in your user's certificate
store (once) and signs dist-msix\claude-codex-taskbar-<version>-x64.msix. To install it,
trust that certificate once from an administrator PowerShell, then add the package:
Import-Certificate -FilePath dist-msix\CCT-LocalTest.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeople
Add-AppxPackage dist-msix\claude-codex-taskbar-<version>-x64.msixRemove it with Get-AppxPackage CCT.LocalTest | Remove-AppxPackage, and delete the test
certificate from Trusted People and from Cert:\CurrentUser\My when you are done.
CI does the same on every pull request on a throwaway runner: pack, sign, install, launch and remove.
- In Partner Center, reserve the app name. Under Product identity, copy
Package/Identity/Name,Package/Identity/PublisherandPackage/Properties/PublisherDisplayName. - Save them as repository variables
MSIX_IDENTITY_NAME,MSIX_PUBLISHERandMSIX_PUBLISHER_DISPLAY_NAME(Settings → Secrets and variables → Actions → Variables). They are not secrets. - Push a release tag. The Release workflow builds the unsigned package with that identity and
keeps it as the
msix-<tag>workflow artifact (90 days), next to the usual release files. Until the variables are set, the artifact carries the local test identity and the Store rejects it. - Upload the
.msixto the submission. Listing: the privacy policy URL is https://chiarorosa.github.io/claude-codex-taskbar/privacy/, and the description must say that CCT is not affiliated with Anthropic or OpenAI. Check Microsoft's current Partner Center requirements and fees first.