summaryrefslogtreecommitdiff
path: root/src/selfupdater.cpp
diff options
context:
space:
mode:
authorAnyOldName3 <krizdjali+github@gmail.com>2018-05-15 23:43:35 +0100
committerAnyOldName3 <krizdjali+github@gmail.com>2018-05-15 23:43:35 +0100
commit8f905e1d498f0c264529737f4b8f7a47c0de59ee (patch)
treed2559884f689882ab488f518aedb7932a35ad03d /src/selfupdater.cpp
parent2ee5f0e96dd6928c271e1b37cd1f77ddc456ef9c (diff)
Change how the VersionInfo object is created from version.rc such that non-release builds are possible and get labelled as such
Diffstat (limited to 'src/selfupdater.cpp')
-rw-r--r--src/selfupdater.cpp44
1 files changed, 40 insertions, 4 deletions
diff --git a/src/selfupdater.cpp b/src/selfupdater.cpp
index d671bafc..8027e804 100644
--- a/src/selfupdater.cpp
+++ b/src/selfupdater.cpp
@@ -104,10 +104,46 @@ SelfUpdater::SelfUpdater(NexusInterface *nexusInterface)
VS_FIXEDFILEINFO version = GetFileVersion(ToWString(QApplication::applicationFilePath()));
- m_MOVersion = VersionInfo(version.dwFileVersionMS >> 16,
- version.dwFileVersionMS & 0xFFFF,
- version.dwFileVersionLS >> 16,
- version.dwFileVersionLS & 0xFFFF);
+ if (version.dwFileFlags | VS_FF_PRERELEASE)
+ {
+ // Pre-release builds need annotating
+ QString versionString = QString::fromStdWString(GetFileVersionString(ToWString(QApplication::applicationFilePath())));
+
+ // 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
+ m_MOVersion = VersionInfo(version.dwFileVersionMS >> 16,
+ version.dwFileVersionMS & 0xFFFF,
+ version.dwFileVersionLS >> 16,
+ version.dwFileVersionLS & 0xFFFF,
+ VersionInfo::RELEASE_PREALPHA);
+ }
+ else
+ {
+ // Trust the string to make sense
+ m_MOVersion = VersionInfo(versionString);
+ qDebug() << "<: " << (m_MOVersion < VersionInfo(2, 1, 4)) << ", >: " << (m_MOVersion > VersionInfo(2, 1, 4));
+ }
+ }
+ else
+ {
+ // Non-pre-release builds just need their version numbers reading
+ m_MOVersion = VersionInfo(version.dwFileVersionMS >> 16,
+ version.dwFileVersionMS & 0xFFFF,
+ version.dwFileVersionLS >> 16,
+ version.dwFileVersionLS & 0xFFFF);
+ }
}