Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wingetcreate doesn't support multiple nodes from single installer #166

Closed
dpprdan opened this issue Sep 13, 2021 · 12 comments
Closed

wingetcreate doesn't support multiple nodes from single installer #166

dpprdan opened this issue Sep 13, 2021 · 12 comments
Labels
Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work.

Comments

@dpprdan
Copy link
Contributor

dpprdan commented Sep 13, 2021

Brief description of your issue

wingetcreate doesn't support multiple nodes from a single installer.

The PostgreSQL.pgAdmin v5.6 installer manifest for example contains two installer nodes with the same URL, one for user and machine scope each, as advised here.

When trying to update this manifest to the latest version, I get the error message "The number of new installer packages must match the number of existing installer packages.".

Steps to reproduce

Run the following to update the PostgreSQL.pgAdmin manifest to the latest version.

wingetcreate update PostgreSQL.pgAdmin --version 5.7 --urls https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.7/windows/pgadmin4-5.7-x64.exe

Expected behavior

Update the manifest to the latest version as specified.

Actual behavior

Error message: "The number of new installer packages must match the number of existing installer packages."

Environment

Windows Manifest Creator v0.3.0.6
@ghost ghost added the Needs-Triage label Sep 13, 2021
@denelon denelon added Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. and removed Needs-Triage labels Sep 14, 2021
@ryfu-msft
Copy link
Contributor

Hey @dpprdan,

Thanks for filing this issue. We don't currently support updating multiple nodes from a single installer as it is not always clear which nodes should be updated with the new installer. However, we just published our newest release of Winget-Create v4.0.3.0 which has a new interactive feature for the update command. You can now manually input the installer url you want to update a given installer node with. Hopefully that resolves your issue.

Thanks!

@denelon denelon added this to the Backlog-Create milestone Oct 1, 2021
@dpprdan
Copy link
Contributor Author

dpprdan commented Oct 29, 2021

The interactive flag solves this for my use-case above.
It obviously doesn't for non-interactive ones (e.g. CI), so I am leaving this open.

@ldennington
Copy link

ldennington commented Nov 3, 2021

FWIW I am also running into this issue with a CI scenario. Matching on Scope seems the most obvious choice for making this work, but unfortunately I haven't found a way to specify that when building my Inno installers.

My team is really trying to use wingetcreate so that we can move off our custom tooling for publishing to winget. However, if this particular issue isn't resolved it's hard for us to justify using winget at all (given all the modifications we'd now have to make to our custom tooling for the multi-file manifest).

@jedieaston
Copy link
Contributor

It seems like wingetcreate could have a special case for this by checking if multiple of the same URL exist in the current manifest, then at least one of the installer URLs passed must be able to replace all of those.

@ldennington
Copy link

@jedieaston
Copy link
Contributor

In the exe manifest (at least for Inno Setup, I don't know if everyone cleanly sets this), this key stuck out to me:

<security>
    <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
</security>

It determines whether the process is to be elevated. Couldn't we use this to determine scope?

@ldennington
Copy link

I will admit, I'd only looked at the metadata in the .iss file when I came to that conclusion. I can investigate this - although of course it would require changes on the wingetcreate side to detect this and use it in the installer logic.

@mdanish-kh
Copy link
Contributor

Resolved with the introduction of architecture (#206) and scope (#367) override syntax

You would be able to use a command like

wingetcreate update --urls "https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.7/windows/pgadmin4-5.7-x64.exe|x64|machine" "https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.7/windows/pgadmin4-5.7-x64.exe|x64|user"

once #367 makes its way into a release of winget-create

cc @denelon

@cderv
Copy link

cderv commented May 11, 2023

@dpprdan was that the missing piece to automate the release process ? Do you plan to test this new feature for next release ?

@dpprdan
Copy link
Contributor Author

dpprdan commented May 11, 2023

@cderv you mean missing with respect to quarto-dev/quarto-release-bundles#1? I don't know to be honest.

@cderv
Copy link

cderv commented May 11, 2023

yeah that it what I meant. I'll look it into before 1.4 release once new winget is released.

@mdanish-kh
Copy link
Contributor

cc @denelon Resolved in WinGet-Create 1.2.6.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work.
Projects
None yet
Development

No branches or pull requests

7 participants