summaryrefslogtreecommitdiffhomepage
path: root/windows/nsis-plugins/src/log/log.cpp
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2021-10-12 13:33:45 +0200
committerOdd Stranne <odd@mullvad.net>2021-10-13 07:12:36 +0200
commitb4edbcbc033af395bf4e9007b53848e1ff4d3a74 (patch)
treed44fd340403e103d483d9c73756676792387a87f /windows/nsis-plugins/src/log/log.cpp
parentd6654e9609381daeb03e001768fa17b5e3bb313d (diff)
downloadmullvadvpn-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.cpp40
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;