winget-cli
winget-cli copied to clipboard
Winget Inspiration, parallel Installation and improved output
Description of the new feature / enhancement
Lately read about this apt alternative called nala and thought it would be great to have a look on some features including but not limited to parallel Installation (limited in Windows with (repackaged) msi, but not with other Installation method such as inno or Appx / msix, I believe.
Also the output of nala is notable. Thinking about winget's role in terms of Intune app deployment nala also provides a good example on visualizing dependencies.
Source of information: https://www-omgubuntu-co-uk.cdn.ampproject.org/v/s/www.omgubuntu.co.uk/2023/01/install-nala-on-ubuntu/
Link to Sourcecode / repository: https://gitlab.com/volian/nala
Proposed technical implementation details
Unfortunately cannot provide a concise description other than kindly asking herewith @denelon and the team to have a look and be inspired.
Goal of this PR should be looking into the implementation of nala from the point of the end user and codewise or get converted into discussion when certain ideas sprawl around this.
Parallel Installation #225
Package Dependencies #163
I like the view. I think we can adopt something like this. Thanks for linking the other issues!
please add parrallel support. Ive been getting into using winget alot for installing and updating software. And updating often takes AGES updating 50+ software 1 by 1. Its honestly quicker to just download all the installers and launch them all at once by myself.
Most installers do not allow concurrent installs, especially any based on MSI. What can be worked on is being worked on, but we cant really help it if the underlying installer tech doesn't support it
Most installers do not allow concurrent installs, especially any based on MSI. What can be worked on is being worked on, but we cant really help it if the underlying installer tech doesn't support it
The download can atleast be parrallized as a start. I understand some installers may have conflicts. But most dont.
We've been looking both at the "download packages in parallel" for install/upgrade scenarios with more than one package, as well as the potential for multiple installs.
The MSIX installer will allow up to six concurrent installs and shouldn't interfere with any other installs.
MSI is limited to one (which can also be paused for Windows updates).
The world of .exe-based installers is where the unknown risk lies. We would likely limit those to one at a time to avoid problems they could cause.
I don't believe it makes sense to allow different installer types to run concurrently.
When we get into these types of scenarios, we will need to build a graph for what to install based on the installer type and the dependencies installer types. Then we can look at some performance optimizations.
Thank you @denelon.
This was quite expected. From my experience in the field exe based installers could run in parallel mode. But that's limited to inno based one like VLC.
Installshield and other often are just wrappers and often enough use msi.
Even msstore some are just wrappers, example Spotify that will download a payload installer like msi.
There could be a way to allow it based on installer type specified in the yaml but that's extremely vague and prone to fail due to msi will not wait on each other but often fail.
As my PR wasn't clean having just one idea at a time should we split it into another one for the visual output idea?
Yes, it's easier to track and make enough progress to close on single requests. I still try to honor the author's intent, but it's harder to track when all the work is done. 😊
@denelon I have missed your comment. This PR is now just about parallel installation. The previous one is split from this and can be tracked now in #4057 . Sorry for the necro and clutter, will avoid this in future.