1.3.0 has been released. master now represents the current state of
development towards the next feature release 1.4.0.
Bugfixes for 1.3 will happen in the 1.3.x branch.
Compared to earlier version bumps we bump a lot more files because of
we produce more artifacts; overlay process, dll and exe split, etc.
This should have happened right after the 1.3.x branch was split off.
Fixes#3761
Waiting on response from xPoke in that ticket concerning theme version. That will have to be landed first, and then this PR updated with the landed commit in mumble-theme.
Feel free to already review independent of xPoke response.
As the mumble-theme commit did not land yet checking out this PR will not work (for others than me who has the commit locally).
1.3.0 has been released. master now represents the current state of
development towards the next feature release 1.4.0.
Bugfixes for 1.3 will happen in the 1.3.x branch.
Compared to earlier version bumps we bump a lot more files because of
we produce more artifacts; overlay process, dll and exe split, etc.
This should have happened right after the 1.3.x branch was split off.
Modify the following entry
<String Id="MUMBLE_CREATE_SHORTCUT">创建桌面快捷方式</String>
<String Id="MUMBLE_CREATE_SHORTCUT">Create Desktop Shortcut</String>
<String Id="DESC_SectionBonjour">Bonjour现在可以在您的网络上报告和发现Murmur服务器。是否下载并运行Bonjour安装程序。</String>
<String Id="DESC_SectionBonjour">Bonjour enables announcement and discovery of Murmur servers on your LAN. This will download and run the Bonjour installer.</String>
<String Id="MUMBLE_SEC_DesktopShortcut">桌面快捷方式</String>
<String Id="MUMBLE_SEC_DesktopShortcut">Desktop shortcut</String>
<String Id="DESC_DesktopShortcut">创建桌面快捷方式</String>
<String Id="DESC_DesktopShortcut">Creates a shortcut on the desktop</String>
This reverts commit 3d4663465e.
That commit was done because of reports that stale files from
old versions of Mumble were left behind. In particular, in
the "Versions" subdirectory.
I just tested this locally, and I can't reproduce that problem.
Reverting this commit should hopefully resolve a lot issues
such as:
mumble-voip/mumble#2901mumble-voip/mumble#1917mumble-voip/mumble#1845mumble-voip/mumble#1700
Perhaps more.
Only older versions of dbghelp.dll are redistributable by themselves.
Newer versions only allow redistribution via MSI files, which are
useless for us.
To sidestep this problem, we'll simply go back to relying on the OSes
version of dbghelp.dll. Shipping an outdated version of dbghelp.dll
isn't sensible. We're better off allowing Windows 10 to use a modern
(its own) version of dbghelp.dll than using a year-old version.
To give some context on how we use dbghelp.dll:
In Mumble, we use dbghelp.dll for writing our Minidumps.
In Murmur, Ice uses it for symbolicating stack traces in
Ice exceptions.
MSVC2015 uses a new CRT called the Universal CRT.
This CRT is distributed in different ways, depending on your
OS.
For Windows XP, the official distribution is a VCRedist installer.
(Or, for Windows XP only -- merge modules).
For Vista through 8.1, UCRT is distributed via Windows Update.
For Windows 10, it's shipped as part of Windows.
This commit amends our installer to install an app-local copy of
the Universal CRT. This is the sanest way for us to distribute the
Universal CRT across all supported targets.
Even if we could drop Windows XP support, the fact that earlier
Windows versions deploy the Universal CRT through Windows Update
makes it a hard pill to swallow. People's hacked up machines might
not be able to get the update from Windows Update for whatever reason.
(Maybe they disabled the Windows Update service for performance reasons,
because a guide on the web told them to?)
So, for now, this is what we'll do. Perhaps it makes more sense to
statically link the UCRT instead of this massive soup of DLLs. But
this is a quick fix to keep our snapshots going until we can work
out the details for statically linking UCRT.
Note: Because Murmur is outside the versioned root-dir, we ship a
separate CRT copy for Murmur. Now that we have to ship the UCRT as
well, that's suddenly a lot more files we'll have to carry. That's
also an unfortunate side-effect of the UCRT. But if you look at it
from the perspective that shipping the VCRUNTIME+UCRT on MSVC2015
"the same thing" as shipping MSVCRT on MSVC2013, we're not really
doing anything much different. Except, we're being "punished" by
the fact that Microsoft decided to split up the CRT into tiny pieces.
Future work: Ideally, we wouldn't include these .wxi files in the
repo, and instead depend on gen-ucrt.py being run before building
the installer. However, that would require buildenv changes, and
require us to redeploy buildenvs, which takes time. To get the UCRT
fix out into a snapshot, let's add them to the repo for now, and we
can clean it up later.
This uses the mechanism documented at
http://wixtoolset.org/documentation/manual/v3/msbuild/daily_builds.html
to use a local copy of WiX instead of using the WiX MSI package.
Previously, we required people to install WiX globally.
That's yet another tedious dependency required in order to build Mumble.
We'll now be distributing WiX in our buildenvs, so tell our .wixproj
to use that version.
I accidently neglected to rename this one instance to the new name in
MSVC2015. (The "msvcr" file is now "vcruntime".)
The rest of the references should be OK.
This is to aid in making the installer WiX project
a bit more maintainable and readable.
If we need the old non-static installer, we always
have the history in Git.
In theory, the installer should already do this, but if we
aren't caferful with our component GUID'ing (or so the docs say),
it can break.
This method will force the uninstallation to happen before
installation.
This should fix the issue where stale files from old versions
are left behind.
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.
Right now, we do not get PDB files for our overlay DLLs because
the overlay DLL PDB files share their name with the overlay helper
PDB files.
To avoid this madness, we rename the overlay helpers as follows:
mumble_ol.exe -> mumble_ol_helper.exe
mumble_ol_x64.exe -> mumble_ol_helper_x64.exe
This is only possible for now because x86 uses the D3DCompiler_43.dll
and x64 uses the D3DCompiler_47.dll.
If we need both to use the same version, we'll need a more complex
directory structure.
But let's tackle that then.