Skip to content

Draft winget and PowerShell Gallery publishing assets - #72

Merged
BiosSystem merged 2 commits into
masterfrom
chore/publishing-prep
Sep 20, 2026
Merged

BiosSystem merged 2 commits into
masterfrom
chore/publishing-prep

Conversation

@BiosSystem

@BiosSystem BiosSystem commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Draft. Publishing assets staged so both distribution paths are ready once credentials are available. Nothing here publishes on its own.

PowerShell Gallery

Publishing/PowerShellGallery/Publish-Winnow.ps1 builds the self-contained standalone, injects a PSScriptInfo block with a fixed script GUID (0e5a6893-36f8-46da-b8b8-0d9500d7a492), validates with Test-ScriptFileInfo, and publishes only when -ApiKey is passed. The modular Winnow.ps1 cannot be a gallery script (it dot-sources the tree), so the standalone is what ships.

Verified locally (dry run, no key): Test-ScriptFileInfo passes - Name Winnow, Version 4.2.3, correct GUID and author.

winget

Three-file manifest for BiosSystem.Winnow, schema 1.12.0, packaged as a zip with a portable entry point.

winget validate confirmed the portable nested installer accepts only a .exe RelativeFilePath (Run.bat/.ps1 rejected). Winnow had no executable, so this is resolved with a launcher shipped as source, not a committed binary:

  • Publishing/launcher/Winnow.cs - minimal C# launcher that starts Winnow.ps1 next to it with a UAC prompt.
  • Publishing/launcher/Build-Launcher.ps1 - compiles it with the .NET Framework C# compiler already on Windows; Winnow.exe is gitignored.

Verified locally: the launcher compiles to a valid 5 KB .NET assembly. The manifest's RelativeFilePath is Winnow.exe; Publishing/README.md documents building it (including the release-workflow step). Including the launcher in releases stays a deliberate maintainer choice, kept out of the default build.

Testing

  • Static validation green (131 files).
  • PS Gallery publish script dry-run: validated locally.
  • Launcher: compiled and PE-validated locally.
  • winget manifest: winget validate run locally; constraint and resolution documented.

Prepare the publishing paths so they are ready once credentials are available.

PowerShell Gallery: Publish-Winnow.ps1 builds the self-contained standalone,
injects a PSScriptInfo block with a fixed script GUID, validates with
Test-ScriptFileInfo, and publishes only when given an API key. The modular
Winnow.ps1 cannot be a gallery script because it dot-sources the tree, so the
standalone is what ships. Dry run verified locally: Test-ScriptFileInfo passes
(Winnow 4.2.3, correct GUID and author).

winget: three-file manifest for BiosSystem.Winnow, schema 1.12.0, packaged as a
zip with a portable entry point. Verified with `winget validate` that the
portable nested installer accepts only a .exe path, so a script entry point is
rejected and Winnow cannot go to winget without a launcher exe. The manifest is
written for that resolved state and the README documents the blocker and the
two options (add a launcher exe, or ship PowerShell Gallery only).

Nothing here publishes on its own; both paths need the account credentials.
winget's portable installer accepts only a .exe entry point, which Winnow
lacked. Add the launcher as source, not a committed binary: Winnow.cs finds
Winnow.ps1 next to itself and starts it with a UAC prompt (the same handoff
Run.bat does), and Build-Launcher.ps1 compiles it with the .NET Framework C#
compiler already on Windows. Winnow.exe is gitignored so only source ships.

Verified locally: the launcher compiles to a valid 5 KB .NET assembly. The
winget manifest already points RelativeFilePath at Winnow.exe; the README now
documents building it, including the release-workflow step, so the winget path
is executable rather than blocked. Including the launcher in releases is still
a deliberate choice for the maintainer, kept out of the default build.
@BiosSystem
BiosSystem marked this pull request as ready for review September 20, 2026 13:52
@BiosSystem
BiosSystem merged commit 5b04d82 into master Sep 20, 2026
1 check passed
@BiosSystem
BiosSystem deleted the chore/publishing-prep branch September 20, 2026 13:52
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