Index: src/ch/UpdateResponse.cpp =================================================================== diff -u -N -r50ad2dc9f0b42ba432bb54e4a042582277410773 -r1f27a2022090cf7aaf827a3f1ad90d6fe0038518 --- src/ch/UpdateResponse.cpp (.../UpdateResponse.cpp) (revision 50ad2dc9f0b42ba432bb54e4a042582277410773) +++ src/ch/UpdateResponse.cpp (.../UpdateResponse.cpp) (revision 1f27a2022090cf7aaf827a3f1ad90d6fe0038518) @@ -41,13 +41,21 @@ std::wstring wstrReleaseDate; std::wstring wstrReleaseNotes; + // add version information; note that assumption here that we receive version informations + // sorted by stability (decreasing) - that way we only present the user suggestions to download + // newest versions with highest stability + unsigned long long ullLastVersionNumber = 0; for(const wiptree::value_type& node : pt.get_child(L"UpdateInfo")) { try { UpdateVersionInfo::EVersionType eType = ParseVersionName(node.first); UpdateVersionInfo vi = ParseVersionInfo(node.second); - m_tVersions.Add(eType, std::move(vi)); + + if(vi.GetFullNumericVersion() > ullLastVersionNumber) + m_tVersions.Add(eType, std::move(vi)); + + ullLastVersionNumber = vi.GetFullNumericVersion(); } catch(const std::exception&) // ignore exceptions from version parsing code {