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

Winget Install Meta-Package #4975

Open
danyinfo1 opened this issue Nov 15, 2024 · 3 comments
Open

Winget Install Meta-Package #4975

danyinfo1 opened this issue Nov 15, 2024 · 3 comments
Labels
Issue-Feature This is a feature request for the Windows Package Manager client. Needs-Author-Feedback Issue needs attention from issue or PR author

Comments

@danyinfo1
Copy link

Description of the new feature / enhancement

I would like the option to install multiple packages simultaneously using the Winget install command, similar to the Winget configuration feature but without needing to define a dsc.yaml file.

I want to define a package that contains several other packages as the actual payload. Then, I can simply execute the command winget install --id MetaPackageName, and all the metapackage content is installed.

The metapackage can look like this:

Meta-Package-Version-1.0

  • componentA-Version-1.0
  • componentB-Version-2.0

If I need a new version, I can create a new metapackage version that includes all the updated components.

Meta-Package-Version-2.0

  • componentA-Version-2.0
  • componentB-Version-3.0

This can be very useful for handling snapshots of components, allowing customers to install the correct versions of a specific snapshot all at once.

Proposed technical implementation details

No response

@danyinfo1 danyinfo1 added the Issue-Feature This is a feature request for the Windows Package Manager client. label Nov 15, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs-Triage Issue need to be triaged label Nov 15, 2024
@denelon denelon removed the Needs-Triage Issue need to be triaged label Nov 16, 2024
@denelon
Copy link
Contributor

denelon commented Nov 16, 2024

We've looked at a concept for metapackages, but this particular scenario is not what we've been considering.

We're looking at a metapackage more in the terms of "runtimes". I'll use Java as the example here. I want to install a package that depends on a Java runtime. I don't really care which one is on the system, but WinGet should be able to know the Java Runtime is satisfied by any of the known Java Runtimes. If one is present, then my package should be installed and use the runtime on the system. If the dependency is not satisfied, then WinGet should "pick one" for me, or tell me what I can choose from.

For the scenario above, this looks more like "code libraries" rather than WinGet packages. I'd suggest using a configuration file or a packages.json file (like the output of winget export -o packages.json) for this scenario.

I'm going to leave this open to make sure I'm not misunderstanding the scenario, but unless I'm missing something I don't think this is a good fit for WinGet. Other package managers like NuGet, pip, and npm are better suited to the scenario I think is being described above.

@denelon denelon added the Needs-Author-Feedback Issue needs attention from issue or PR author label Nov 16, 2024
@Trenly
Copy link
Contributor

Trenly commented Nov 17, 2024

I would also like to add that you can chain multiple packages together in a single install command

winget install <package.one> <package.two> . . . <package.number>

@florelis
Copy link
Member

I like it. The way I understand it, a meta-package would be like a named collection of packages; or like a package with dependencies but no installer for the main app.

I know at least Gentoo has the same concept of meta-packages. For example, there is a KDE meta package (plasma-meta) that brings in the KDE desktop environment, and the KDE terminal, and the KDE file explorer, etc.

I could see this being useful for Sysinternals, for example. We can have individual packages for each tool, and then one meta-package that installs all the tools. (We already have something like that, but the global Sysinternals package simply has an installer/zip that contains everything, instead of using the individual installers/zips for each tool.)

Configuration, import and specifying multiple packages in the CLI already allow installing more than one package with one command, but having meta-packages in a source would make it more discoverable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Issue-Feature This is a feature request for the Windows Package Manager client. Needs-Author-Feedback Issue needs attention from issue or PR author
Projects
None yet
Development

No branches or pull requests

4 participants