From db527c55cf94922eb258ac6979f62ea61c124d76 Mon Sep 17 00:00:00 2001 From: Dmitry Vedenko Date: Fri, 25 Jun 2021 19:34:42 +0300 Subject: [PATCH] Distinguish between Win32 and Win64 update urls --- src/update/UpdateDataParser.cpp | 30 ++++++++++++++++++++++++------ src/update/UpdateDataParser.h | 6 ++++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/update/UpdateDataParser.cpp b/src/update/UpdateDataParser.cpp index 445dca28f..58e4698a1 100644 --- a/src/update/UpdateDataParser.cpp +++ b/src/update/UpdateDataParser.cpp @@ -56,23 +56,41 @@ bool UpdateDataParser::HandleXMLTag(const wxChar* tag, const wxChar** attrs) return true; } - if (wxStrcmp(tag, mXmlTagNames[XmlParsedTags::kWindowsTag]) == 0) + const wxPlatformInfo& info = wxPlatformInfo::Get(); + + constexpr bool is32Bit = sizeof(void*) == 4; + constexpr bool is64Bit = sizeof(void*) == 8; + + if (is32Bit) { - if (wxPlatformInfo::Get().GetOperatingSystemId() & wxOS_WINDOWS) - mXmlParsingState = XmlParsedTags::kOsTag; - return true; + if (wxStrcmp(tag, mXmlTagNames[XmlParsedTags::kWin32Tag]) == 0) + { + if (info.GetOperatingSystemId() & wxOS_WINDOWS) + mXmlParsingState = XmlParsedTags::kOsTag; + return true; + } + } + + if (is64Bit) + { + if (wxStrcmp(tag, mXmlTagNames[XmlParsedTags::kWin64Tag]) == 0) + { + if (info.GetOperatingSystemId() & wxOS_WINDOWS) + mXmlParsingState = XmlParsedTags::kOsTag; + return true; + } } if (wxStrcmp(tag, mXmlTagNames[XmlParsedTags::kMacosTag]) == 0) { - if (wxPlatformInfo::Get().GetOperatingSystemId() & wxOS_MAC) + if (info.GetOperatingSystemId() & wxOS_MAC) mXmlParsingState = XmlParsedTags::kOsTag; return true; } if (wxStrcmp(tag, mXmlTagNames[XmlParsedTags::kLinuxTag]) == 0) { - if (wxPlatformInfo::Get().GetOperatingSystemId() & wxOS_UNIX_LINUX) + if (info.GetOperatingSystemId() & wxOS_UNIX_LINUX) mXmlParsingState = XmlParsedTags::kOsTag; return true; } diff --git a/src/update/UpdateDataParser.h b/src/update/UpdateDataParser.h index 870efbad4..d9348b700 100644 --- a/src/update/UpdateDataParser.h +++ b/src/update/UpdateDataParser.h @@ -36,7 +36,8 @@ private: kUpdateTag, kDescriptionTag, kOsTag, - kWindowsTag, + kWin32Tag, + kWin64Tag, kMacosTag, kLinuxTag, kVersionTag, @@ -48,7 +49,8 @@ private: { XmlParsedTags::kUpdateTag, wxT("Updates") }, { XmlParsedTags::kDescriptionTag, wxT("Description") }, { XmlParsedTags::kOsTag, wxT("OS") }, - { XmlParsedTags::kWindowsTag, wxT("Windows") }, + { XmlParsedTags::kWin32Tag, wxT("Win32") }, + { XmlParsedTags::kWin64Tag, wxT("Win64") }, { XmlParsedTags::kMacosTag, wxT("Macos") }, { XmlParsedTags::kLinuxTag, wxT("Linux") }, { XmlParsedTags::kVersionTag, wxT("Version") },