From 5a8c7f505eb3e899d1d4dc5796e9e16ded231b47 Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Mon, 1 Jun 2015 20:38:39 +0200 Subject: Update the Mumble installer to work with a versioned directory hierarchy. This commit updates the Mumble installer to install all binaries except mumble.exe into a "versioned root". For example, a typical Mumble installation would look something like this (rooted the install target, typically "C:\Program Files (x86)\Mumble"): /mumble.exe /Versions/1.3.0/mumble_app.dll /Versions/1.3.0/mumble_ol.dll /Versions/1.3.0/mumble_ol_x64.dll /Versions/1.3.0/mumble_ol_helper.exe /Versions/1.3.0/mumble_ol_helper_x64.exe /Versions/1.3.0/mumble-g15-helper.exe /Versions/1.3.0/[various runtime DLLs, D3DCompiler, MSVCRT, etc.] This also changes the installer to disable use of the Windows restart manager. The Windows restart manager does not work too well when the Mumble overlay is in use. In this case, the restart manager will prompt users to restart all applications that the overlay is injected into. Users see this as a big list of programs that they must close to upgrade Mumble. This can be very scary for anyone that does not know about the inner workings of the Mumble overlay, and are new to Mumble. It is an instant red flag for people, and they will associate Mumble with malware, or be afraid that it will actually touch anything in those programs and make them unusable in some fashion. The combination of disabling the restart manager and the new versioned directory hierarchy removes nearly all of the cases where a user sees a "file in use" dialog when running the Mumble installer. The overlay DLLs will not trigger the "files in use" dialog anymore, because upgrading to a newer version of Mumble will cause the new overlay DLLs to be installed in a distinct directory. The removal of the old overlay files will also not trigger the "files in use" dialog. Their removal will simply be scheduled on the next restart of the computer. This commit also includes a forceful termination of "mumble.exe" when performing an upgrade of the Mumble installation. This is done because the removal of the restart manager functionality in the installer unfortunately also removes the ability to have the restart manager quit Mumble on upgrade. With the implementation of the versioned directory hierarchy, there is a problem with the placement of some of our dependencies, at least when Mumble and Murmur are installed at the same time. The "murmur.exe" executable expects dbghelp.dll, msvcr120.dll and msvcp120.dll to be next to "murmur.exe". However, with this new directory hierarchy for the client, those DLLs live in the versioned root instead. To remedy this, we include two copies of these dependencies. If Murmur is not chosen during installation, only Mumble's copies are installed in the versioned root. If Murmur is selected, the DLLs will also be installed next to murmur.exe. --- installer/Files.wxs | 129 ++++++++++++++++++++++++++++++++----------------- installer/Product.wxs | 41 ++++++++++------ installer/Settings.wxi | 4 ++ 3 files changed, 115 insertions(+), 59 deletions(-) (limited to 'installer') diff --git a/installer/Files.wxs b/installer/Files.wxs index 1becd1355..d25e09ab6 100644 --- a/installer/Files.wxs +++ b/installer/Files.wxs @@ -2,31 +2,14 @@ - + - - - - - - - - - - - - - + + + + + - - - - - @@ -85,6 +68,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -129,33 +181,12 @@ - - - - - - - - - - - - - - - - - - - - - @@ -364,7 +395,15 @@ - + + + + + + + + + diff --git a/installer/Product.wxs b/installer/Product.wxs index af19483cd..05746d5e7 100644 --- a/installer/Product.wxs +++ b/installer/Product.wxs @@ -1,5 +1,6 @@ - + @@ -15,6 +16,8 @@ Uninstalling old version + + @@ -41,6 +44,7 @@ mumble.ico + @@ -116,8 +120,6 @@ - - @@ -130,16 +132,6 @@ - - - - - - - - - - @@ -176,6 +168,18 @@ + + + + + + + + + + + + @@ -196,7 +200,15 @@ - + + + + + + + + + @@ -220,6 +232,7 @@ NSISINSTALL NSISINSTALL AND NOT Installed + WIX_UPGRADE_DETECTED diff --git a/installer/Settings.wxi b/installer/Settings.wxi index 4d9dc8e43..07a45607b 100644 --- a/installer/Settings.wxi +++ b/installer/Settings.wxi @@ -155,4 +155,8 @@ + + + + -- cgit v1.2.3