diff options
| author | Odd Stranne <odd@mullvad.net> | 2021-10-12 13:33:45 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2021-10-13 07:12:36 +0200 |
| commit | b4edbcbc033af395bf4e9007b53848e1ff4d3a74 (patch) | |
| tree | d44fd340403e103d483d9c73756676792387a87f /windows/nsis-plugins/src/log/log.cpp | |
| parent | d6654e9609381daeb03e001768fa17b5e3bb313d (diff) | |
| download | mullvadvpn-b4edbcbc033af395bf4e9007b53848e1ff4d3a74.tar.xz mullvadvpn-b4edbcbc033af395bf4e9007b53848e1ff4d3a74.zip | |
Label Windows 11 correctly in installer log file
Diffstat (limited to 'windows/nsis-plugins/src/log/log.cpp')
| -rw-r--r-- | windows/nsis-plugins/src/log/log.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/windows/nsis-plugins/src/log/log.cpp b/windows/nsis-plugins/src/log/log.cpp index 23ca329eb1..a491dc9b2d 100644 --- a/windows/nsis-plugins/src/log/log.cpp +++ b/windows/nsis-plugins/src/log/log.cpp @@ -181,6 +181,44 @@ std::wstring GetWindowsVersion() return version; } + +// +// FixupWindows11ProductName() +// +// Patch product name based on Windows version. +// The registry value that holds the product name seems to be deprecated in Win11. +// +std::wstring FixupWindows11ProductName(const std::wstring &productName, const std::wstring &version) +{ + const auto versionTokens = common::string::Tokenize(version, L"."); + + if (versionTokens.size() < 3) + { + return productName; + } + + const auto major = common::string::LexicalCast<uint32_t>(versionTokens[0]); + const auto minor = common::string::LexicalCast<uint32_t>(versionTokens[1]); + const auto build = common::string::LexicalCast<uint32_t>(versionTokens[2]); + + if (major != 10 || minor != 0 || build < 22000) + { + return productName; + } + + auto productTokens = common::string::Tokenize(productName, L" "); + + for (auto &token : productTokens) + { + if (0 == token.compare(L"10")) + { + token = L"11"; + } + } + + return common::string::Join(productTokens, L" "); +} + } // anonymous namespace // @@ -374,7 +412,7 @@ void __declspec(dllexport) NSISCALL LogWindowsVersion std::wstringstream ss; ss << L"Windows version: " - << productName + << FixupWindows11ProductName(productName, version) << L", " << version; |
