mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.29k stars 1.11k forks source link

Installer doesn't check for visuall c++ redistributable installation #5549

Open k1ttt-remote opened 2 years ago

k1ttt-remote commented 2 years ago

Description

installed on a win 10 machine that had mumble and murmur 1.3.3 but that doesn't get used for much else. on trying to start mumble server 1.4.230 it reported vc 2015 runtime libraries were missing.

Steps to reproduce

  1. installed on a win 10 machine that had mumble and murmur 1.3.3 but that doesn't get used for much else.
  2. on trying to start mumble server 1.4.230 it reported vc 2015 runtime libraries were missing.

Mumble version

1.4.230

Mumble component

Server

OS

Windows

Reproducible?

Haven't tried

Additional information

No response

Relevant log output

No response

Screenshots

No response

k1ttt-remote commented 2 years ago

this may be worse than just the vc 2015 redist. the exact error calls for vcruntime140_1.dll and msvcp140_1.dll... more searching reveals that error could be from a later redist and recommended a link to the 2015-2022 combined redist downloads at: https://docs.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

installing those fixed the server and client which was also failing to start with a different app launcher error.

Krzmbrzl commented 2 years ago

The issue is indeed that the installer (neither client nor server) does not ship the VC redistributable and also doesn't perform any check as to whether it has been installed yet. That has caused quite a bit of confusion already.

davidebeatrici commented 2 years ago

We should also get rid of the launcher, as it doesn't allow detailed errors (i.e. specific missing DLLs) to appear.

Krzmbrzl commented 2 years ago

Indeed - but that's a separate issue.

Rovanion commented 2 years ago

Duplicate (but with a root cause based title) of issue #5512.

Krzmbrzl commented 2 years ago

Yes you're right. Thanks for mentioning :+1:

SC1040-TS2 commented 2 years ago

The issue is indeed that the installer (neither client nor server) does not ship the VC redistributable and also doesn't perform any check as to whether it has been installed yet. That has caused quite a bit of confusion already.

Extending from this reply, a custom message for a check to explain what the cause is for a specific missing Redistributable .DLL file and how to directly fix it is probably necessary.

This is to prevent users from only seeing a "Missing MSVCP140_1.dll" error message only, not perceiving the underlying meaning of that due to it not being reported with the error, and subsequently looking up that exact text only to come across .DLL file downloading sites that may be questionable, and more importantly do not directly solve the issue.

I have come across users resorting to that .DLL file downloading solution when the missing component is the only thing reported by an error message about it on multiple occasions, in cases where games needed a certain dependency that Windows does not ship or no longer ships with by default.

With that in mind, using the error message to educate the end user on how to fix it correctly is paramount here.

ghost commented 2 years ago

We need a blurb on this page that states downloading and installing the Visual C++ runtime 2015-2022 is required:

https://www.mumble.info/downloads/

I don't think this is a "bug" as we had talked about shipping it with the installer and that it was not worth it because we would have to devote resources to monitoring the status of something that is client side and managed by Windows Update. It would require repacking a version update in our installer based on this which may also be misleading and didn't seem like a sensible driver to increment the build number given the previously mentioned information. This should probably be an issue for the website repo.

SC1040-TS2 commented 2 years ago

I don't think this is a "bug" as we had talked about shipping it with the installer and that it was not worth it because we would have to devote resources to monitoring the status of something that is client side and managed by Windows Update.

About that. Depending on the Windows 10 or 11 installation or whatever the end user has, Windows Update may or will not provide certain Visual C++ Redistributables. At all.

This is especially true for versions of the 2015-2022 Redists that have only just released, in which case end users would have to go to a site such as TechPowerUp to find them, as for some reason that site has less time delay in providing new release versions of Redists compared to when the official MSVC page is eventually updated with them.

ghost commented 2 years ago

About that. Depending on the Windows 10 or 11 installation or whatever the end user has, Windows Update may or will not provide certain Visual C++ Redistributables. At all.

Correct. Unless the PC had the Redistributables installed by the OEM's value added software, or some other third party software, it will not be there on a standard Windows install even as far back as XP. This is why I opened an Issue to put instructions to download the latest general release from Microsoft on the website.

This is especially true for versions of the 2015-2022 Redists that have only just released, in which case end users would have to go to a site such as TechPowerUp to find them, as for some reason that site has less time delay in providing new release versions of Redists compared to when the official MSVC page is eventually updated with them.

While we can't control for every possible scenario of what people will install on their computers, I do recommend that you use the general or Insider installers directly from Microsoft. If someone installs them from another source and doesn't tell us then we may not be able to assist with troubleshooting properly. In the case of bleeding edge (insider) installs, those should typically be people actively developing Mumble and testing for issues with the newer Redistributables. In other scenarios with the general release, Windows Update handles keeping them up to date.

Krzmbrzl commented 1 year ago

Reopening this as we're aiming to implement this for 1.5

ghost commented 1 year ago

It seems a better (more open source friendly) option is available for consideration:

https://github.com/microsoft/STL

The team did discuss adding a permalink to the vcredist installer as part of the Mumble installer, but with Microsoft open sourcing it that doesn't seem to make good long term sense. We should probably be utilizing open source methods as much as possible.

Part of the debate opposing further exploration of Microsoft STL as a solution, was the version would have to increase if we needed to update STL and build it statically to address security issues or other bugs. My position is, that argument is true regardless of which library that Mumble depends on. It falls in line with any other patch we may release to address issues with our own code. These reasons for opposition are self defeating.

Another potential issue with adding the permalink to the installer is that the user should be involved in accepting the EULA for the binary vcredist installer. It should be disclosed during installation and may change as Microsoft finishes their task list with STL under new licensing. This means silent installs (i.e. GPO related installs that typically do not notify the user) could become problematic. Prompting the user to install vcredist requires admin privileges to complete.

If it is an issue with not being able to rely on Microsoft, then can we supplement what we need from boost?

https://www.boost.org/sgi/stl/stl_introduction.html

This seems like a better path forward as we consider requests like https://github.com/mumble-voip/mumble/issues/1292 which may not be possible with the modified Mumble installer since the vcredist installer will require admin privileges.

My recommendation is to explore a solution that doesn't rely on adding more complexity to the installer and the process while giving more flexibility to complete more sensible feature requests.