Merge with develop

--HG--
branch : compatibility-develop
This commit is contained in:
kervala 2016-10-18 13:43:08 +02:00
commit 7b3fe00c6a
3 changed files with 48 additions and 28 deletions

View file

@ -974,29 +974,7 @@ OperationStep CConfigFile::getInstallNextStep() const
} }
// current installer more recent than installed one // current installer more recent than installed one
switch (compareInstallersVersion()) if (compareInstallersVersion() == 1) return CopyInstaller;
{
// 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 and launched Installer is the installed one
default:
{
#ifdef Q_OS_WIN32
QString tempPath = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
// check if launched from TEMP directory
bool rightPath = getInstallerCurrentDirPath().startsWith(tempPath);
#else
bool rightPath = false;
#endif
if (!rightPath && getInstallerCurrentFilePath() != getInstallerInstalledFilePath() && QFile::exists(getInstallerInstalledFilePath())) return LaunchInstalledInstaller;
}
}
// no default profile // no default profile
if (profile.id.isEmpty()) if (profile.id.isEmpty())
@ -1039,6 +1017,31 @@ OperationStep CConfigFile::getInstallNextStep() const
} }
} }
// current installer more recent than installed one
switch (compareInstallersVersion())
{
// current installer more recent, copy it
case 1: break;
// current installer older, launch the more recent installer
case -1: return LaunchInstalledInstaller;
// continue only if 0 and launched Installer is the installed one
default:
{
#ifdef Q_OS_WIN32
QString tempPath = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
// check if launched from TEMP directory
bool rightPath = getInstallerCurrentDirPath().startsWith(tempPath);
#else
bool rightPath = false;
#endif
if (!rightPath && getInstallerCurrentFilePath() != getInstallerInstalledFilePath() && QFile::exists(getInstallerInstalledFilePath())) return LaunchInstalledInstaller;
}
}
return Done; return Done;
} }

View file

@ -75,8 +75,18 @@ void CFilesCopier::getFile(const QFileInfo &fileInfo, const QDir &srcDir, FilesT
// full path to file // full path to file
QString fullPath = fileInfo.absoluteFilePath(); QString fullPath = fileInfo.absoluteFilePath();
QString relativePath = srcDir.relativeFilePath(fullPath);
QFileInfo relativeFileInfo(relativePath);
// correct absolute path
if (relativeFileInfo.isAbsolute())
{
relativePath = relativeFileInfo.fileName();
}
// full path where to copy file // full path where to copy file
QString dstPath = m_destinationDirectory + "/" + srcDir.relativeFilePath(fullPath); QString dstPath = m_destinationDirectory + "/" + relativePath;
if (fileInfo.isDir()) if (fileInfo.isDir())
{ {

View file

@ -241,6 +241,8 @@ int main(int argc, char *argv[])
step = config.getInstallNextStep(); step = config.getInstallNextStep();
} }
bool restartInstaller = false;
if (step != Done) if (step != Done)
{ {
@ -254,20 +256,25 @@ int main(int argc, char *argv[])
if (step == LaunchInstalledInstaller) if (step == LaunchInstalledInstaller)
{ {
#ifndef _DEBUG
// restart more recent installed Installer version // restart more recent installed Installer version
if (QProcess::startDetached(config.getInstallerInstalledFilePath())) return 0; restartInstaller = true;
#endif
} }
else if (step == Done) 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
if (QProcess::startDetached(config.getInstallerInstalledFilePath())) return 0; restartInstaller = true;
#endif #endif
} }
} }
if (restartInstaller)
{
#ifndef _DEBUG
if (QProcess::startDetached(config.getInstallerInstalledFilePath())) return 0;
#endif
}
CMainWindow mainWindow; CMainWindow mainWindow;
mainWindow.show(); mainWindow.show();