microsoft/winget-create

Architecture specific `update` doesn't work

rakleed opened this issue · 2 comments

Brief description of your issue

I initially wanted to run the normal update command:

wingetcreate update --submit --urls https://todoist.com/windows_app --version 8.12.0 Doist.Todoist

But it didn't work:

Each new installer URL must have a single match to an existing installer based on architecture, installer type and scope. The following installers failed to match an existing installer:
Multiple matches found for X86 Nullsoft installer detected from the url: https://todoist.com/windows_app
Try using the architecture and/or scope overrides to uniquely match new URLs to existing installer nodes in the manifest.

So I ran the command specifying the new architecture:

wingetcreate update --submit --urls https://todoist.com/windows_app|x86 --version 8.12.0 Doist.Todoist

To which I received an error message:

x86: The term 'x86' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Apparently | is used as a logical or, but how can I then specify both the URL and the new architecture?

Steps to reproduce

wingetcreate update --submit --urls https://todoist.com/windows_app|x86 --version 8.12.0 Doist.Todoist

Expected behavior

The update command must create the correct manifest.

Actual behavior

x86: The term 'x86' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Environment

Windows Package Manager Manifest Creator v1.5.7.0
System Architecture: x64
Windows: 11 v. 23H2
Package: Doist.Todoist 8.12.0

You need to quote the entire string composed of URL and the override as "https://todoist.com/windows_app|x86". Although here, the x86 override won't work since the current manifest in the repo (which you can see using wingetcreate show Doist.Todoist -i) has a single installer node with architecture "neutral". You would need to specify neutral architecture as the override, making the overall command to be:

wingetcreate update --submit --urls "https://todoist.com/windows_app|neutral" --version 8.12.0 Doist.Todoist

(Note: netural is deprecated as an architecture. If the app supports multiple architectures, please modify the PR manually after its creation to have multiple installer nodes for every supported architecture)

@mdanish-kh thanks! Could you please put <InstallerUrl1>|<InstallerArchitecture> in quotes in the documentation for Override the architecture of an installer: so that other users don't have the same problem as me?