Changed: Always launch the more recent version of Installer
--HG-- branch : develop
This commit is contained in:
parent
f65883296b
commit
a5a488da3e
5 changed files with 32 additions and 8 deletions
|
@ -727,12 +727,13 @@ bool CConfigFile::shouldCreateMenuShortcut() const
|
||||||
return !shortcutExists(profile.getClientMenuShortcutFullPath());
|
return !shortcutExists(profile.getClientMenuShortcutFullPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CConfigFile::shouldCopyInstaller() const
|
int CConfigFile::compareInstallersVersion() const
|
||||||
{
|
{
|
||||||
|
// returns 0 if same version, 1 if current installer is more recent, -1 if installed installer is more recent
|
||||||
QString installerDst = getInstallationDirectory() + "/" + m_installerFilename;
|
QString installerDst = getInstallationDirectory() + "/" + m_installerFilename;
|
||||||
|
|
||||||
// if installer not found in installation directory, extract it from BNP
|
// if installer not found in installation directory
|
||||||
if (!QFile::exists(installerDst)) return true;
|
if (!QFile::exists(installerDst)) return 1;
|
||||||
|
|
||||||
QString installedVersion = getVersionFromExecutable(installerDst);
|
QString installedVersion = getVersionFromExecutable(installerDst);
|
||||||
QString newVersion = QApplication::applicationVersion();
|
QString newVersion = QApplication::applicationVersion();
|
||||||
|
@ -740,8 +741,11 @@ bool CConfigFile::shouldCopyInstaller() const
|
||||||
QVersionNumber installedVer = QVersionNumber::fromString(installedVersion);
|
QVersionNumber installedVer = QVersionNumber::fromString(installedVersion);
|
||||||
QVersionNumber newVer = QVersionNumber::fromString(newVersion);
|
QVersionNumber newVer = QVersionNumber::fromString(newVersion);
|
||||||
|
|
||||||
// if version is greater, copy it
|
// same version
|
||||||
return newVer > installedVer;
|
if (newVer == installedVer) return 0;
|
||||||
|
|
||||||
|
// if version is greater or lower
|
||||||
|
return newVer > installedVer ? 1:-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CConfigFile::getInstallerCurrentFilePath() const
|
QString CConfigFile::getInstallerCurrentFilePath() const
|
||||||
|
@ -959,7 +963,18 @@ OperationStep CConfigFile::getInstallNextStep() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldCopyInstaller()) return CopyInstaller;
|
// current installer more recent than installed one
|
||||||
|
switch (compareInstallersVersion())
|
||||||
|
{
|
||||||
|
// current installer more recent, copy it
|
||||||
|
case 1: return CopyInstaller;
|
||||||
|
|
||||||
|
// current installer older, launch the more recent installer
|
||||||
|
case -1: return LaunchInstalledInstaller;
|
||||||
|
|
||||||
|
// continue only if 0
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
// no default profile
|
// no default profile
|
||||||
if (profile.id.isEmpty())
|
if (profile.id.isEmpty())
|
||||||
|
|
|
@ -104,7 +104,7 @@ public:
|
||||||
bool foundTemporaryFiles(const QString &directory) const;
|
bool foundTemporaryFiles(const QString &directory) const;
|
||||||
bool shouldCreateDesktopShortcut() const;
|
bool shouldCreateDesktopShortcut() const;
|
||||||
bool shouldCreateMenuShortcut() const;
|
bool shouldCreateMenuShortcut() const;
|
||||||
bool shouldCopyInstaller() const;
|
int compareInstallersVersion() const;
|
||||||
|
|
||||||
// installation choices
|
// installation choices
|
||||||
bool use64BitsClient() const;
|
bool use64BitsClient() const;
|
||||||
|
|
|
@ -252,7 +252,14 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
step = config.getInstallNextStep();
|
step = config.getInstallNextStep();
|
||||||
|
|
||||||
if (step == Done)
|
if (step == LaunchInstalledInstaller)
|
||||||
|
{
|
||||||
|
#ifndef _DEBUG
|
||||||
|
// restart more recent installed Installer version
|
||||||
|
if (QProcess::startDetached(config.getInstallerOriginalFilePath(), QApplication::arguments())) return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else if (step == Done)
|
||||||
{
|
{
|
||||||
#if defined(Q_OS_WIN) && !defined(_DEBUG)
|
#if defined(Q_OS_WIN) && !defined(_DEBUG)
|
||||||
// restart Installer, so it could be copied in TEMP and allowed to update itself
|
// restart Installer, so it could be copied in TEMP and allowed to update itself
|
||||||
|
|
|
@ -64,6 +64,7 @@ enum OperationStep
|
||||||
CleanFiles,
|
CleanFiles,
|
||||||
ExtractBnpClient,
|
ExtractBnpClient,
|
||||||
CopyInstaller,
|
CopyInstaller,
|
||||||
|
LaunchInstalledInstaller,
|
||||||
UninstallOldClient,
|
UninstallOldClient,
|
||||||
CreateProfile,
|
CreateProfile,
|
||||||
CreateProfileShortcuts,
|
CreateProfileShortcuts,
|
||||||
|
|
|
@ -199,6 +199,7 @@ void COperationDialog::processInstallNextStep()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Done:
|
case Done:
|
||||||
|
case LaunchInstalledInstaller:
|
||||||
acceptDelayed();
|
acceptDelayed();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue