feat(server): start using semver for launcher

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
Rachel Powers 2025-04-08 04:17:10 -07:00
parent 734db2bedc
commit b579cae5c2
No known key found for this signature in database
GPG Key ID: E10E321EB160949B
6 changed files with 35 additions and 30 deletions

View File

@ -195,10 +195,11 @@ set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE S
######## Set version numbers ######## ######## Set version numbers ########
set(Launcher_VERSION_MAJOR 10) set(Launcher_VERSION_MAJOR 10)
set(Launcher_VERSION_MINOR 0) set(Launcher_VERSION_MINOR 0)
set(Launcher_VERSION_PATCH 0)
set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}") set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_PATCH}")
set(Launcher_VERSION_NAME4 "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.0.0") set(Launcher_VERSION_NAME4 "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_PATCH}.0")
set(Launcher_VERSION_NAME4_COMMA "${Launcher_VERSION_MAJOR},${Launcher_VERSION_MINOR},0,0") set(Launcher_VERSION_NAME4_COMMA "${Launcher_VERSION_MAJOR},${Launcher_VERSION_MINOR},${Launcher_VERSION_PATCH},0")
# Build platform. # Build platform.
set(Launcher_BUILD_PLATFORM "unknown" CACHE STRING "A short string identifying the platform that this build was built for. Only used to display in the about dialog.") set(Launcher_BUILD_PLATFORM "unknown" CACHE STRING "A short string identifying the platform that this build was built for. Only used to display in the about dialog.")

View File

@ -34,8 +34,8 @@
*/ */
#include <qstringliteral.h> #include <qstringliteral.h>
#include "BuildConfig.h"
#include <QObject> #include <QObject>
#include "BuildConfig.h"
const Config BuildConfig; const Config BuildConfig;
@ -58,6 +58,7 @@ Config::Config()
// Version information // Version information
VERSION_MAJOR = @Launcher_VERSION_MAJOR@; VERSION_MAJOR = @Launcher_VERSION_MAJOR@;
VERSION_MINOR = @Launcher_VERSION_MINOR@; VERSION_MINOR = @Launcher_VERSION_MINOR@;
VERSION_PATCH = @Launcher_VERSION_PATCH@;
BUILD_PLATFORM = "@Launcher_BUILD_PLATFORM@"; BUILD_PLATFORM = "@Launcher_BUILD_PLATFORM@";
BUILD_ARTIFACT = "@Launcher_BUILD_ARTIFACT@"; BUILD_ARTIFACT = "@Launcher_BUILD_ARTIFACT@";
@ -74,8 +75,7 @@ Config::Config()
MAC_SPARKLE_PUB_KEY = "@MACOSX_SPARKLE_UPDATE_PUBLIC_KEY@"; MAC_SPARKLE_PUB_KEY = "@MACOSX_SPARKLE_UPDATE_PUBLIC_KEY@";
MAC_SPARKLE_APPCAST_URL = "@MACOSX_SPARKLE_UPDATE_FEED_URL@"; MAC_SPARKLE_APPCAST_URL = "@MACOSX_SPARKLE_UPDATE_FEED_URL@";
if (!MAC_SPARKLE_PUB_KEY.isEmpty() && !MAC_SPARKLE_APPCAST_URL.isEmpty()) if (!MAC_SPARKLE_PUB_KEY.isEmpty() && !MAC_SPARKLE_APPCAST_URL.isEmpty()) {
{
UPDATER_ENABLED = true; UPDATER_ENABLED = true;
} else if (!UPDATER_GITHUB_REPO.isEmpty() && !BUILD_ARTIFACT.isEmpty()) { } else if (!UPDATER_GITHUB_REPO.isEmpty() && !BUILD_ARTIFACT.isEmpty()) {
UPDATER_ENABLED = true; UPDATER_ENABLED = true;
@ -89,27 +89,19 @@ Config::Config()
GIT_REFSPEC = "@Launcher_GIT_REFSPEC@"; GIT_REFSPEC = "@Launcher_GIT_REFSPEC@";
// Assume that builds outside of Git repos are "stable" // Assume that builds outside of Git repos are "stable"
if (GIT_REFSPEC == QStringLiteral("GITDIR-NOTFOUND") if (GIT_REFSPEC == QStringLiteral("GITDIR-NOTFOUND") || GIT_TAG == QStringLiteral("GITDIR-NOTFOUND") ||
|| GIT_TAG == QStringLiteral("GITDIR-NOTFOUND") GIT_REFSPEC == QStringLiteral("") || GIT_TAG == QStringLiteral("GIT-NOTFOUND")) {
|| GIT_REFSPEC == QStringLiteral("")
|| GIT_TAG == QStringLiteral("GIT-NOTFOUND"))
{
GIT_REFSPEC = "refs/heads/stable"; GIT_REFSPEC = "refs/heads/stable";
GIT_TAG = versionString(); GIT_TAG = versionString();
GIT_COMMIT = ""; GIT_COMMIT = "";
} }
if (GIT_REFSPEC.startsWith("refs/heads/")) if (GIT_REFSPEC.startsWith("refs/heads/")) {
{
VERSION_CHANNEL = GIT_REFSPEC; VERSION_CHANNEL = GIT_REFSPEC;
VERSION_CHANNEL.remove("refs/heads/"); VERSION_CHANNEL.remove("refs/heads/");
} } else if (!GIT_COMMIT.isEmpty()) {
else if (!GIT_COMMIT.isEmpty())
{
VERSION_CHANNEL = GIT_COMMIT.mid(0, 8); VERSION_CHANNEL = GIT_COMMIT.mid(0, 8);
} } else {
else
{
VERSION_CHANNEL = "unknown"; VERSION_CHANNEL = "unknown";
} }
@ -136,7 +128,7 @@ Config::Config()
QString Config::versionString() const QString Config::versionString() const
{ {
return QString("%1.%2").arg(VERSION_MAJOR).arg(VERSION_MINOR); return QString("%1.%2.%3").arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_PATCH);
} }
QString Config::printableVersionString() const QString Config::printableVersionString() const
@ -144,8 +136,7 @@ QString Config::printableVersionString() const
QString vstr = versionString(); QString vstr = versionString();
// If the build is not a main release, append the channel // If the build is not a main release, append the channel
if(VERSION_CHANNEL != "stable" && GIT_TAG != vstr) if (VERSION_CHANNEL != "stable" && GIT_TAG != vstr) {
{
vstr += "-" + VERSION_CHANNEL; vstr += "-" + VERSION_CHANNEL;
} }
return vstr; return vstr;
@ -162,4 +153,3 @@ QString Config::systemID() const
{ {
return QStringLiteral("%1 %2 %3").arg(COMPILER_TARGET_SYSTEM, COMPILER_TARGET_SYSTEM_VERSION, COMPILER_TARGET_SYSTEM_PROCESSOR); return QStringLiteral("%1 %2 %3").arg(COMPILER_TARGET_SYSTEM, COMPILER_TARGET_SYSTEM_VERSION, COMPILER_TARGET_SYSTEM_PROCESSOR);
} }

View File

@ -59,6 +59,8 @@ class Config {
int VERSION_MAJOR; int VERSION_MAJOR;
/// The minor version number. /// The minor version number.
int VERSION_MINOR; int VERSION_MINOR;
/// The patch version number.
int VERSION_PATCH;
/** /**
* The version channel * The version channel

View File

@ -298,6 +298,10 @@ PrismUpdaterApp::PrismUpdaterApp(int& argc, char** argv) : QApplication(argc, ar
auto version_parts = version.split('.'); auto version_parts = version.split('.');
m_prismVersionMajor = version_parts.takeFirst().toInt(); m_prismVersionMajor = version_parts.takeFirst().toInt();
m_prismVersionMinor = version_parts.takeFirst().toInt(); m_prismVersionMinor = version_parts.takeFirst().toInt();
if (!version_parts.isEmpty())
m_prismVersionPatch = version_parts.takeFirst().toInt();
else
m_prismVersionPatch = 0;
} }
m_allowPreRelease = parser.isSet("pre-release"); m_allowPreRelease = parser.isSet("pre-release");
@ -556,6 +560,7 @@ void PrismUpdaterApp::run()
m_prismVersion = BuildConfig.printableVersionString(); m_prismVersion = BuildConfig.printableVersionString();
m_prismVersionMajor = BuildConfig.VERSION_MAJOR; m_prismVersionMajor = BuildConfig.VERSION_MAJOR;
m_prismVersionMinor = BuildConfig.VERSION_MINOR; m_prismVersionMinor = BuildConfig.VERSION_MINOR;
m_prismVersionPatch = BuildConfig.VERSION_PATCH;
m_prsimVersionChannel = BuildConfig.VERSION_CHANNEL; m_prsimVersionChannel = BuildConfig.VERSION_CHANNEL;
m_prismGitCommit = BuildConfig.GIT_COMMIT; m_prismGitCommit = BuildConfig.GIT_COMMIT;
} }
@ -564,6 +569,7 @@ void PrismUpdaterApp::run()
qDebug() << "Executable reports as:" << m_prismBinaryName << "version:" << m_prismVersion; qDebug() << "Executable reports as:" << m_prismBinaryName << "version:" << m_prismVersion;
qDebug() << "Version major:" << m_prismVersionMajor; qDebug() << "Version major:" << m_prismVersionMajor;
qDebug() << "Version minor:" << m_prismVersionMinor; qDebug() << "Version minor:" << m_prismVersionMinor;
qDebug() << "Version minor:" << m_prismVersionPatch;
qDebug() << "Version channel:" << m_prsimVersionChannel; qDebug() << "Version channel:" << m_prsimVersionChannel;
qDebug() << "Git Commit:" << m_prismGitCommit; qDebug() << "Git Commit:" << m_prismGitCommit;
@ -1277,6 +1283,10 @@ bool PrismUpdaterApp::loadPrismVersionFromExe(const QString& exe_path)
return false; return false;
m_prismVersionMajor = version_parts.takeFirst().toInt(); m_prismVersionMajor = version_parts.takeFirst().toInt();
m_prismVersionMinor = version_parts.takeFirst().toInt(); m_prismVersionMinor = version_parts.takeFirst().toInt();
if (!version_parts.isEmpty())
m_prismVersionPatch = version_parts.takeFirst().toInt();
else
m_prismVersionPatch = 0;
m_prismGitCommit = lines.takeFirst().simplified(); m_prismGitCommit = lines.takeFirst().simplified();
return true; return true;
} }
@ -1400,7 +1410,7 @@ GitHubRelease PrismUpdaterApp::getLatestRelease()
bool PrismUpdaterApp::needUpdate(const GitHubRelease& release) bool PrismUpdaterApp::needUpdate(const GitHubRelease& release)
{ {
auto current_ver = Version(QString("%1.%2").arg(QString::number(m_prismVersionMajor)).arg(QString::number(m_prismVersionMinor))); auto current_ver = Version(QString("%1.%2.%3").arg(m_prismVersionMajor).arg(m_prismVersionMinor).arg(m_prismVersionPatch));
return current_ver < release.version; return current_ver < release.version;
} }

View File

@ -121,6 +121,7 @@ class PrismUpdaterApp : public QApplication {
QString m_prismVersion; QString m_prismVersion;
int m_prismVersionMajor = -1; int m_prismVersionMajor = -1;
int m_prismVersionMinor = -1; int m_prismVersionMinor = -1;
int m_prismVersionPatch = -1;
QString m_prsimVersionChannel; QString m_prsimVersionChannel;
QString m_prismGitCommit; QString m_prismGitCommit;

View File

@ -398,6 +398,7 @@ Section "@Launcher_DisplayName@"
WriteRegStr HKCU Software\Classes\prismlauncher\shell\open\command "" '"$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" "%1"' WriteRegStr HKCU Software\Classes\prismlauncher\shell\open\command "" '"$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" "%1"'
; Write the uninstall keys for Windows ; Write the uninstall keys for Windows
; https://learn.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key
${GetParameters} $R0 ${GetParameters} $R0
${GetOptions} $R0 "/NoUninstaller" $R1 ${GetOptions} $R0 "/NoUninstaller" $R1
${If} ${Errors} ${If} ${Errors}