Fixed: Use the right executable for client or default one
This commit is contained in:
parent
ae361f28f7
commit
2080c59915
5 changed files with 60 additions and 28 deletions
|
@ -575,13 +575,33 @@ bool CConfigFile::shouldCreateDesktopShortcut() const
|
||||||
return profile.desktopShortcut && !QFile::exists(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/Ryzom.lnk");
|
return profile.desktopShortcut && !QFile::exists(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/Ryzom.lnk");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CConfigFile::getClientFullPath() const
|
QString CConfigFile::getProfileClientFullPath(int profileIndex) const
|
||||||
{
|
{
|
||||||
QString path = getProfile().executable;
|
const CProfile &profile = getProfile(profileIndex);
|
||||||
|
|
||||||
|
QString path = profile.executable;
|
||||||
|
|
||||||
if (!path.isEmpty()) return path;
|
if (!path.isEmpty()) return path;
|
||||||
|
|
||||||
return getInstallationDirectory() + "/" + getServer().id + "/" + getServer().clientFilename;
|
return getServerClientFullPath(profile.server);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CConfigFile::getServerClientFullPath(const QString &serverId) const
|
||||||
|
{
|
||||||
|
const CServer &server = getServer(serverId);
|
||||||
|
|
||||||
|
if (server.clientFilename.isEmpty()) return "";
|
||||||
|
|
||||||
|
return getInstallationDirectory() + "/" + server.id + "/" + server.clientFilename;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CConfigFile::getServerConfigurationFullPath(const QString &serverId) const
|
||||||
|
{
|
||||||
|
const CServer &server = getServer(serverId);
|
||||||
|
|
||||||
|
if (server.configurationFilename.isEmpty()) return "";
|
||||||
|
|
||||||
|
return getInstallationDirectory() + "/" + server.id + "/" + server.configurationFilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CConfigFile::getSrcServerClientBNPFullPath() const
|
QString CConfigFile::getSrcServerClientBNPFullPath() const
|
||||||
|
|
|
@ -171,7 +171,9 @@ public:
|
||||||
|
|
||||||
QString getClientArch() const;
|
QString getClientArch() const;
|
||||||
|
|
||||||
QString getClientFullPath() const;
|
QString getProfileClientFullPath(int profileIndex = -1) const;
|
||||||
|
QString getServerClientFullPath(const QString &serverId = "") const;
|
||||||
|
QString getServerConfigurationFullPath(const QString &serverId = "") const;
|
||||||
|
|
||||||
QString getSrcServerClientBNPFullPath() const;
|
QString getSrcServerClientBNPFullPath() const;
|
||||||
|
|
||||||
|
|
|
@ -80,16 +80,20 @@ void CMainWindow::onPlayClicked()
|
||||||
|
|
||||||
if (profileIndex < 0) return;
|
if (profileIndex < 0) return;
|
||||||
|
|
||||||
CProfile profile = CConfigFile::getInstance()->getProfile(profileIndex);
|
CConfigFile *config = CConfigFile::getInstance();
|
||||||
|
|
||||||
if (profile.executable.isEmpty()) return;
|
const CProfile &profile = config->getProfile(profileIndex);
|
||||||
|
|
||||||
|
QString executable = config->getProfileClientFullPath(profileIndex);
|
||||||
|
|
||||||
|
if (executable.isEmpty() || !QFile::exists(executable)) return;
|
||||||
|
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << "-p";
|
arguments << "-p";
|
||||||
arguments << QString::number(profileIndex);
|
arguments << QString::number(profileIndex);
|
||||||
arguments << profile.arguments.split(' ');
|
arguments << profile.arguments.split(' ');
|
||||||
|
|
||||||
bool started = QProcess::startDetached(profile.executable, arguments);
|
bool started = QProcess::startDetached(executable, arguments);
|
||||||
|
|
||||||
CConfigFile::getInstance()->setDefaultProfileIndex(profileIndex);
|
CConfigFile::getInstance()->setDefaultProfileIndex(profileIndex);
|
||||||
}
|
}
|
||||||
|
@ -100,19 +104,19 @@ void CMainWindow::onConfigureClicked()
|
||||||
|
|
||||||
if (profileIndex < 0) return;
|
if (profileIndex < 0) return;
|
||||||
|
|
||||||
CProfile profile = CConfigFile::getInstance()->getProfile(profileIndex);
|
CConfigFile *config = CConfigFile::getInstance();
|
||||||
|
|
||||||
if (profile.server.isEmpty()) return;
|
const CProfile &profile = config->getProfile(profileIndex);
|
||||||
|
|
||||||
CServer server = CConfigFile::getInstance()->getServer(profile.server);
|
QString executable = config->getServerConfigurationFullPath(profile.server);
|
||||||
|
|
||||||
if (server.configurationFilename.isEmpty()) return;
|
if (executable.isEmpty() || !QFile::exists(executable)) return;
|
||||||
|
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << "-p";
|
arguments << "-p";
|
||||||
arguments << QString::number(profileIndex);
|
arguments << QString::number(profileIndex);
|
||||||
|
|
||||||
bool started = QProcess::startDetached(server.configurationFilename, arguments);
|
bool started = QProcess::startDetached(executable, arguments);
|
||||||
|
|
||||||
CConfigFile::getInstance()->setDefaultProfileIndex(profileIndex);
|
CConfigFile::getInstance()->setDefaultProfileIndex(profileIndex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -590,7 +590,6 @@ bool COperationDialog::createDefaultProfile()
|
||||||
CProfile profile;
|
CProfile profile;
|
||||||
|
|
||||||
profile.id = "0";
|
profile.id = "0";
|
||||||
profile.executable = config->getClientFullPath();
|
|
||||||
profile.name = QString("Ryzom (%1)").arg(server.name);
|
profile.name = QString("Ryzom (%1)").arg(server.name);
|
||||||
profile.server = server.id;
|
profile.server = server.id;
|
||||||
profile.comments = "Default profile created by Ryzom Installer";
|
profile.comments = "Default profile created by Ryzom Installer";
|
||||||
|
|
|
@ -111,7 +111,7 @@ void CProfilesDialog::displayProfile(int index)
|
||||||
profileIdLabel->setText(profile.id);
|
profileIdLabel->setText(profile.id);
|
||||||
nameEdit->setText(profile.name);
|
nameEdit->setText(profile.name);
|
||||||
serverComboBox->setCurrentIndex(m_serversModel->getIndexFromServerID(profile.server));
|
serverComboBox->setCurrentIndex(m_serversModel->getIndexFromServerID(profile.server));
|
||||||
executablePathLabel->setText(QFileInfo(profile.executable).fileName());
|
executablePathLabel->setText(QFileInfo(executable).fileName());
|
||||||
argumentsEdit->setText(profile.arguments);
|
argumentsEdit->setText(profile.arguments);
|
||||||
commentsEdit->setPlainText(profile.comments);
|
commentsEdit->setPlainText(profile.comments);
|
||||||
directoryPathLabel->setText(profileDirectory);
|
directoryPathLabel->setText(profileDirectory);
|
||||||
|
@ -208,19 +208,11 @@ void CProfilesDialog::updateExecutableVersion(int index)
|
||||||
// file empty, use default one
|
// file empty, use default one
|
||||||
if (executable.isEmpty())
|
if (executable.isEmpty())
|
||||||
{
|
{
|
||||||
executable = CConfigFile::getInstance()->getInstallationDirectory() + "/" + profile.server + "/";
|
executable += CConfigFile::getInstance()->getServerClientFullPath(profile.server);
|
||||||
|
|
||||||
#if defined(Q_OS_WIN32)
|
|
||||||
executable += "ryzom_client_r.exe";
|
|
||||||
#elif defined(Q_OS_APPLE)
|
|
||||||
executable += "Ryzom.app/Contents/MacOS/Ryzom";
|
|
||||||
#else
|
|
||||||
executable += "ryzom_client";
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// file doesn't exist
|
// file doesn't exist
|
||||||
if (!QFile::exists(executable)) return;
|
if (executable.isEmpty() || !QFile::exists(executable)) return;
|
||||||
|
|
||||||
// launch executable with --version argument
|
// launch executable with --version argument
|
||||||
QProcess process;
|
QProcess process;
|
||||||
|
@ -252,13 +244,28 @@ void CProfilesDialog::onExecutableBrowseClicked()
|
||||||
|
|
||||||
CProfile &profile = m_model->getProfiles()[m_currentProfileIndex];
|
CProfile &profile = m_model->getProfiles()[m_currentProfileIndex];
|
||||||
|
|
||||||
QString file = QFileDialog::getOpenFileName(this, tr("Please choose Ryzom client executable to launch"), profile.executable, tr("Executables (*.exe)"));
|
QString executable = profile.executable;
|
||||||
|
|
||||||
if (file.isEmpty()) return;
|
if (executable.isEmpty())
|
||||||
|
{
|
||||||
|
executable = CConfigFile::getInstance()->getServerClientFullPath(profile.server);
|
||||||
|
}
|
||||||
|
|
||||||
profile.executable = file;
|
executable = QFileDialog::getOpenFileName(this, tr("Please choose Ryzom client executable to launch"), executable, tr("Executables (*.exe)"));
|
||||||
|
|
||||||
executablePathLabel->setText(QFileInfo(profile.executable).fileName());
|
if (executable.isEmpty()) return;
|
||||||
|
|
||||||
|
// don't need to save the new executable if the same as default one
|
||||||
|
if (executable == CConfigFile::getInstance()->getServerClientFullPath(profile.server))
|
||||||
|
{
|
||||||
|
profile.executable.clear();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
profile.executable = executable;
|
||||||
|
}
|
||||||
|
|
||||||
|
executablePathLabel->setText(QFileInfo(executable).fileName());
|
||||||
|
|
||||||
updateExecutableVersion(m_currentProfileIndex);
|
updateExecutableVersion(m_currentProfileIndex);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue