Skip to content

Publish on WinGet and Chocolatey - #7

Open
Kenshin9977 wants to merge 6 commits into
mainfrom
packaging/winget-chocolatey
Open

Publish on WinGet and Chocolatey#7
Kenshin9977 wants to merge 6 commits into
mainfrom
packaging/winget-chocolatey

Conversation

@Kenshin9977

@Kenshin9977 Kenshin9977 commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Adds WinGet and Chocolatey publishing, mirroring what usbscope now does.

The two channels get different artifacts

Velopack installs per user and updates itself. Chocolatey runs elevated, so Setup.exe there would install into the administrator's profile and be invisible to whoever typed the command.

Artifact Scope Who updates it
WinGet Setup.exe user, declared in the manifest the app itself
Chocolatey portable zip machine choco upgrade

Adds the MIT licence

This repository had none. Without a licence, redistribution is not permitted by default, which is exactly what both channels do: WinGet requires the License field and Chocolatey checks licenseUrl. MIT, matching the other public projects here.

Safe before the accounts exist

Both jobs warn and exit clean when their secret is missing, so releases keep working. The Chocolatey job still packs, so a broken package fails the run rather than a user's install.

The first submission to each channel is manual and documented in docs/packaging.md.

Verified

actionlint clean. The diff to release.yml is additions only, no lines removed.

Kenshin9977 added 6 commits July 28, 2026 22:38
WinGet gets Setup.exe with user scope declared, because that is where Velopack
actually installs. Chocolatey gets the portable zip: it runs elevated, so
Setup.exe there would install into the administrator's profile and be invisible
to whoever typed the command.

Both jobs no-op with a warning when their secret is missing, so releases keep
working before the accounts exist. The first submission to each is manual and
documented in docs/packaging.md.

Neither channel will accept this repository as it stands: there is no LICENSE
file, and both require one. The manifests assume MIT; confirm or change it.
Without one, redistribution is not permitted by default, which is exactly what
WinGet and Chocolatey do. Both require the field the manifests here already set.
It takes a plain signed EXE hosted by us, so no repackaging is needed. The field
that catches people is the silent switch: the Store runs the installer
unattended and a setup that opens a window fails certification.
The Microsoft Store runs the installer unattended and fails certification if it
opens a window. WinGet needs the same. Both were documented as a manual field to
fill in; this checks the claim on every release by installing and uninstalling
for real.

Testing this on usbscope turned up a Velopack trap worth catching here too: the
installer runs the app once at install and once at uninstall with a --veloapp-*
argument, so an app that ignores them starts its tray icon in the middle of a
silent install.
The Store certifies one binary and distributes it. An app that replaces itself
afterwards is running code the Store never reviewed, and leaves the listing
describing a version nobody is running. So the store build asks the Store to be
the update channel and stays out of it.

Same code, one flag. The ordinary build is untouched and still self-updates,
which is what WinGet, Chocolatey and the download link keep getting.

CI installs both channels for real on every release, so neither can quietly
stop being silent, and the store one fails the build if its marker is absent.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant