-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
FEAT(installer): bundle c++ redistributables #6789
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
base: master
Are you sure you want to change the base?
FEAT(installer): bundle c++ redistributables #6789
Conversation
After building each server and client msi, the installer script creates an exe bundle that includes a step to download and install the visual c++ redistributables.
Presently, the version required check is at least |
Nice, thank you very much. I still have a conceptual question: Why exactly does the VC installer have to be present at compile time and being downloaded when running the Mumble installer? Wouldn't the version used at build time be overwritten by the downloaded one anyway?
If we really need to have this at build time, we can make use/adapt this CMake function to download the mumble/3rdparty/rnnoise-build/CMakeLists.txt Lines 49 to 56 in f304e0a
Of course then it would make sense to declare the download url in CMake and write this variable to the |
That's a good question. The ExePackage has a child element called RemotePayload that has fields about the download file including a sha1 hash that it uses to validate the download when a user runs the installer. (The validation can be toggled off with In the commit you commented on, I didn't specify the However, it looks like the That means if, in the future, you change the |
I have read this a couple of times, not sure if I got this right. But it sounds to me like it would be possible to download |
I probably didn't explain it well. Right now in this branch, if you manually place The alternative is providing the metadata in the The first option has the advantage where, if you change the version of the distributables you depend on, you just change the The advantage of the second option is not having to worry about having the redistributables installer around at compile time, so it makes things a bit simpler. It kind of comes down to your preference. The second option is maybe a bit less convenient if you change what version of redistributables you depend on -- but my guess is that is very rare. If you want, I can write a new commit in this branch to show you what I mean exactly. (That way I can actually test that the second option actually works like I think it will.) And you can squash/edit the changesets as you wish before merging. |
Ok, I get it now, but I also think we are having two different conversations :)
My point is, it does not currently do that automatically. That is why the CI pipeline is failing. We/You/I can change the As a developer, having to download the redistributable and manually placing it in the directory when building is not an option. We need to be able to automatically build Mumble and the installer |
Yeah I agree. I might have misunderstood your question. I wasn't sure what your preference was between either having cmake download the redistributables or an option where the download wasn't required and instead the metadata was included in the source code. If you prefer the first option, I can have a go at making the required changes to cmake. I'm not real sure if cscs.exe (the program that starts the toolchain for building the mumble installer) has macros like the |
Yeah, that would be awesome. Downloading stuff at build time using CMake instead of doing it manually is fine. This will make the CI happy then I suppose :) |
I've updated this branch so that cmake downloads the redistributable and passes the download URL as a command line argument to cscs when building the installer so that the URL is only defined in one place. Let me know if you have any other questions or would like other adjustments. |
@sqwishy Looks reasonable to me like this. However, the Windows ecosystem is a mystery to me. @davidebeatrici Could you please test the installer on a Windows test machine? @Krzmbrzl Any thoughts? I would like to merge this before the next 1.5 release |
After building each server and client msi, the installer script creates an exe bundle that includes a step to download and install the visual c++ redistributables.
re #5549
This commit needs the redistrituables installer downloaded to
installer/VC_redist.x64.exe
. It includes a change in cmake to copy the file from there to the build directory. The wixsharp installer building stuff needsVC_redist.x64.exe
when building the bundle, even though the file isn't embedded in the resulting exe.I presume you would rather configure cmake download
VC_redist.x64.exe
or something instead of adding it to version control, so I didn't commit it.I left some comments in the C# code to try to explain what is going on with the installer and how the Wix stuff works. Let me know if you have any other questions.
The way the bundle works in this commit is that it hides the UI from the .msi installer and just displays is own UI in its place. So the license and logo are copied in to the bundle UI and it ends up resembling the .msi a bit. Here's a screenshot of what to expect.
Checks