Skip to content

Clarify some manifest values and add examples#6277

Open
sredna wants to merge 2 commits into
microsoft:masterfrom
sredna:manifest_clarify
Open

Clarify some manifest values and add examples#6277
sredna wants to merge 2 commits into
microsoft:masterfrom
sredna:manifest_clarify

Conversation

@sredna

@sredna sredna commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

📖 Description

  • Tries to clarify the description of some of the manifest values.
  • Adds value examples.
  • Adds the UpgradeCode definition.

Notes:

  • UpgradeCode is restricted only to GUIDs because this is a MSI feature. I have verified that all existing manifests in the community repository only uses GUIDs here.
  • DefaultInstallLocation is restricted to strings starting with % or \. The thinking is that the only sane values are %ProgramFiles%\MyApp, %LOCALAPPDATA%\Programs\MyApp and \AppInRootOfDrive.

🔗 References

Fixes some of the issues reported in #6221

🔍 Validation

None/YOLO

✅ Checklist

📋 Issue Type

  • Bug fix
  • Feature
  • Task
Microsoft Reviewers: Open in CodeFlow

@sredna sredna requested a review from a team as a code owner June 10, 2026 19:37
@github-actions

This comment has been minimized.

@JohnMcPMS JohnMcPMS left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes seem reasonable to me, but I don' actually touch the schema much so I would like someone else to take a look too.

The flow for semantic changes to the schema as part of a new minor version also requires quite a bit more setup. See #5997 and/or #5011.

I think I will also create some additional documentation to prevent the need for you to parse through those if you want to wait for that.

@JohnMcPMS

Copy link
Copy Markdown
Member

#6280 ; you could either grab the script from that PR or wait for it to be merged. But #6279 is updating the minor version that the script picks up so probably want that too.

},
"UpgradeCode": {
"type": [ "string", "null" ],
"pattern": "^{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}}$",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could be mistaken, but I believe I've seen instances of a product code or an upgrade code value not being a GUID. In general, MSI product codes and upgrade codes do follow that convention, but I'm concerned this might break some things.

@sredna sredna Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I searched the community repository and found none (for upgrade code, clearly not true for product code but that is not what we are talking about here). Upgrade codes are strictly a MSI concept and will always be a GUID.

Or to put it another way, how would a non-GUID work? Where in the registry would it be stored and which Win32/MSI API provides enumeration support?

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.

3 participants