-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Rust .msi installer ignores current install #26765
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
Comments
Note: this issue is about installing a new version of Rust over an old version in the same folder. It doesn't concern installing separate versions of Rust in separate folders. An "Update" option to the installer that automatically selects the current Rust install path would be great as well, as it currently suggests something rather arbitrary, |
I think because the name of the software changes with each version of Rust, the msi installation system ends up thinking that they are two different pieces of software and thus doesn't recognize the old version to ask you what you want to do with it. Ideally the installer would detect if there is an existing installation of Rust in the folder you're installing to and automatically uninstall the old one, but I'm not sure how to do that with msi. |
It's disappointing because the .exe installer did this. It was my preferred method of updating when it was still available. |
The .msi installer only updates versions which have the same (platform,channel,major,minor) tuple. For example it will update nightly 1.3.X -> 1.3.Y in-place. Everything else is treated as different software version - to enable installing them side-by side (which the .exe version did not allow). The detection is based on versions stored in the registry, not on the installation path. |
That's an issue because I only really bother to update when the minor version gets bumped, as I expect is the same with many people. And, like I said, this is a pretty big discrepancy when you look at how easy it is to install and update Rust on the *nixes, package manager or otherwise. Why does the Rust installer care about side-by-side installs anyways? Can't |
This is based partly on my own preferences and partly because Python also does upgrades this way.
Multirust is a shell script that uses a bunch of unix command line tools, so it won't work on Windows without msys. |
Nominating because this is surprising behavior to a lot of people. |
triage: P-medium Would love to fix, but doesn't seem super high priority right now. |
This is very confusing for new users.
Google brought me here and I understand now that I shouldn't have installed Rust in the old directory, but still very confusing behaviour. I just wish the updates for Rust in msys2 would come faster. |
To add to this issue, I'm not sure if this is specific to the .msi installer over the .exe installer, but it also appends the new directory to the PATH rather than replacing the current instance. This caused my system to prefer the old version rather than the new version and I had to update my PATH manually. |
cc #35653 |
Triage: I'm not totally sure, and frankly don't want to try and reproduce and mess up my local install, heh. I'm not sure how important this is these days, in the world of rustup. |
Triage: .msi is still provided as an official installation method: https://forge.rust-lang.org/infra/other-installation-methods.html. Can someone please check if this is still a problem? Many years has passed since this was last reported to be a problem. Thanks! |
One of the convenient features of the defunct .exe installer is it would remove old library archives before installing new ones, so that one could update Rust just by running over the current install. The .msi installer does not do this, it just naively installs the new libraries next to the old ones, and Rust can't figure out which to use:
I can't simply update my Rust install anymore. I have to remove the old libraries either manually or by running the Rust uninstaller. This is a major convenience discrepancy compared to using Rust on the Unix-based platforms.
The text was updated successfully, but these errors were encountered: