Pass product codes through to new-version #7

Merged
jeff merged 1 commit from product-codes into main 2026-10-14 03:33:52 -05:00
Owner

Closes #6.

  • New product-codes input: one <architecture> <code> per line, parsed by the same rules as installers. Each line is passed to wingetsource new-version as --product-code ARCH=CODE. It's optional. new-version is what checks the codes match the installers and are GUIDs in braces (jeff/winget-pkgs#19).
  • README: adds the input to the table, and explains that an MSI package reads the code from the MSI it just built, for example the ProductCode row of msiinfo export <msi> Property, and passes it in.

Tested

  • 5 new unit tests.
  • Dry runs against the real jeff/winget-pkgs main for a pretend JCOllie.Harrier 0.1.1, using 0.1.0's MSI:
    • Without product-codes: stops at new-version with "the x64 installer has a ProductCode … give the new one with --product-code", before anything is pushed.
    • With a code: writes it in single quotes, check reports 0 problems, and it prints the pull request it would open.

Clipwatch keeps its pin. It doesn't need the input, and new-version is unchanged for it. Harrier needs to move its pin to this commit and pass the code. That's a change to its release.yaml.

🤖 Generated with Claude Code

https://claude.ai/code/session_01D31MsLkM9DkCauP1EB2zgw

Closes #6. - **New `product-codes` input:** one `<architecture> <code>` per line, parsed by the same rules as `installers`. Each line is passed to `wingetsource new-version` as `--product-code ARCH=CODE`. It's optional. `new-version` is what checks the codes match the installers and are GUIDs in braces (jeff/winget-pkgs#19). - **README:** adds the input to the table, and explains that an MSI package reads the code from the MSI it just built, for example the `ProductCode` row of `msiinfo export <msi> Property`, and passes it in. ## Tested - 5 new unit tests. - Dry runs against the real `jeff/winget-pkgs` `main` for a pretend `JCOllie.Harrier` 0.1.1, using 0.1.0's MSI: - **Without `product-codes`:** stops at `new-version` with "the x64 installer has a ProductCode … give the new one with --product-code", before anything is pushed. - **With a code:** writes it in single quotes, `check` reports 0 problems, and it prints the pull request it would open. Clipwatch keeps its pin. It doesn't need the input, and `new-version` is unchanged for it. Harrier needs to move its pin to this commit and pass the code. That's a change to its `release.yaml`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01D31MsLkM9DkCauP1EB2zgw
pass product codes through to new-version
All checks were successful
test / test (push) Successful in 1m49s
ddb5e02f2c
A product-codes input, one `<architecture> <code>` per line, is handed
to `wingetsource new-version` as --product-code. It is optional: only
an installer with a ProductCode needs one, and new-version now refuses
to copy a stale one, so an MSI package passes the code it reads from
the MSI it has just built.

Closes #6

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01D31MsLkM9DkCauP1EB2zgw
jeff merged commit f09c868fc5 into main 2026-10-14 03:33:52 -05:00
jeff deleted branch product-codes 2026-10-14 03:33:53 -05:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jeff/winget-submit!7
No description provided.