Windows installer is very slow
Describe the bug
I manage software on my Windows machine via WinGet. Periodically, I run winget upgrade --all to upgrade versions. In general, this works very smoothly, but AWS CLI is an outlier here. The installer is very slow in upgrading, taking tens of seconds, if not several minutes to get its job done. Even complicated and large software such as browsers and IDEs update faster. The issue is worsened by the very fast upgrade cycle of AWS CLI v2, which means that the slow installer runs basically every time WinGet runs.
Please look into making the Windows installer faster.
Regression Issue
- [ ] Select this option if this issue appears to be a regression.
Expected Behavior
Install completes in seconds
Current Behavior
Install completes, but takes tens of seconds, if not minutes
Reproduction Steps
Depending on if AWS CLI is already installed:
winget install Amazon.AWSCLI
winget upgrade Amazon.AWSCLI
Possible Solution
No response
Additional Information/Context
No response
CLI version used
2
Environment details (OS name and version, etc.)
Windows 11
Hi @otto-liljalaakso-nt, thanks you for reaching out and for your patience.
The AWS CLI does not support third-party package managers such as WinGet; the WinGet AWS CLI page isn't actually owned by AWS.
In my testing, using the msiexec command mention in the installation guide, AWS CLI v2 installed in about 40 seconds. Are you seeing significantly higher times than that using that installation method?
It looks like WinGet in using that same installer, and is snappy for some other packages. So I expect that using WinGet to drive installation is not significant here. So to stay with your supported installers policy, we can restrict this issue to official methods.
I had problems timing the msiexec.msi method, so I used the "download and install" path here instead.
- Downloading https://awscli.amazonaws.com/AWSCLIV2-2.27.54.msi
- Starting the installer with
./AWSCLIV2-2.27.54.msi - Clicking through the GUI installer, using default options
- Measuring the time from final click of Install until I see the GUI notification about completed install
Result: 56 seconds.
Then I tested the upgrade case by downloading https://awscli.amazonaws.com/AWSCLIV2-2.27.55.msi and following the same sequence. Result: 4 minutes 44 seconds.
Finally, I clocked uninstall by starting it from Windows Settings and measuring the time until the GUI progress bar disappears. Result: 2 minutes 56 seconds.
I do not care much for fresh install and uninstall times, because those are rare operations. On the other hand, I consider the time needed to upgrade a problem for fast releasing tool like AWS CLI.
JFYI: although Winget is a community-maintained repository of package manifests, it does download the actual install artifacts from official sources.
https://github.com/microsoft/winget-pkgs/blob/master/manifests/a/Amazon/AWSCLI/2.27.55/Amazon.AWSCLI.installer.yaml
I do not care much for fresh install and uninstall times, because those are rare operations. On the other hand, I consider the time needed to upgrade a problem for fast releasing tool like AWS CLI.
Makes sense. I did some testing on the time to upgrade v2 and it was pretty consistent at about three minutes.
2.18.0 0m51s (fresh install)
2.19.0 3m02s
2.20.0 3m10s
2.21.0 3m08s
2.22.0 2m59s
2.23.0 3m12s
2.24.0 3m11s
2.25.0 3m07s
2.26.0 3m06s
2.27.0 3m04s
2.28.0 3m09s
2.29.0 3m05s
2.30.0 3m12s
2.31.3 3m06s
I'm going to bring this issue up for review with the team to see if this is something we can improve, or if these times being considerably longer than a fresh install is expected.
It takes more than 15 minutes to update 24MB package while 1.5GB Visual Studio update takes 5 min including downloading.
After review, we've taken a backlog item to investigate why the update times are much longer than the fresh installation times, and will update this issue when we know more.
👍 This is becoming a critical issue for large fleet deployments. I'm at 10 minutes and still not done.