From 15db1b76f72a7dd88dbb84df42951c57dfe9917e Mon Sep 17 00:00:00 2001 From: AnyOldName3 Date: Wed, 16 May 2018 00:42:31 +0100 Subject: Move improved version parsing to util.h and use it everywhere. --- src/shared/util.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src/shared/util.cpp') diff --git a/src/shared/util.cpp b/src/shared/util.cpp index 008c5050..102565f5 100644 --- a/src/shared/util.cpp +++ b/src/shared/util.cpp @@ -27,6 +27,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include namespace MOShared { @@ -202,5 +203,50 @@ std::wstring GetFileVersionString(const std::wstring &fileName) } } +MOBase::VersionInfo createVersionInfo() +{ + VS_FIXEDFILEINFO version = GetFileVersion(QApplication::applicationFilePath().toStdWString()); + + if (version.dwFileFlags | VS_FF_PRERELEASE) + { + // Pre-release builds need annotating + QString versionString = QString::fromStdWString(GetFileVersionString(QApplication::applicationFilePath().toStdWString())); + + // The pre-release flag can be set without the string specifying what type of pre-release + bool noLetters = true; + for (QChar character : versionString) + { + if (character.isLetter()) + { + noLetters = false; + break; + } + } + + if (noLetters) + { + // Default to pre-alpha when release type is unspecified + return MOBase::VersionInfo(version.dwFileVersionMS >> 16, + version.dwFileVersionMS & 0xFFFF, + version.dwFileVersionLS >> 16, + version.dwFileVersionLS & 0xFFFF, + MOBase::VersionInfo::RELEASE_PREALPHA); + } + else + { + // Trust the string to make sense + return MOBase::VersionInfo(versionString); + } + } + else + { + // Non-pre-release builds just need their version numbers reading + return MOBase::VersionInfo(version.dwFileVersionMS >> 16, + version.dwFileVersionMS & 0xFFFF, + version.dwFileVersionLS >> 16, + version.dwFileVersionLS & 0xFFFF); + } +} + } // namespace MOShared -- cgit v1.3.1