From dfb0a3b724f624532557fe7cb20e8678560f444c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 24 May 2015 14:49:54 +0200 Subject: GH-991 implement wrapper commands --- logic/BaseInstance.cpp | 1 + logic/minecraft/MinecraftProcess.cpp | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'logic') diff --git a/logic/BaseInstance.cpp b/logic/BaseInstance.cpp index 661e4587..0a0bc961 100644 --- a/logic/BaseInstance.cpp +++ b/logic/BaseInstance.cpp @@ -42,6 +42,7 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s // Custom Commands m_settings->registerSetting({"OverrideCommands","OverrideLaunchCmd"}, false); m_settings->registerOverride(globalSettings->getSetting("PreLaunchCommand")); + m_settings->registerOverride(globalSettings->getSetting("WrapperCommand")); m_settings->registerOverride(globalSettings->getSetting("PostExitCommand")); // Console diff --git a/logic/minecraft/MinecraftProcess.cpp b/logic/minecraft/MinecraftProcess.cpp index d52eb97c..71dd81ed 100644 --- a/logic/minecraft/MinecraftProcess.cpp +++ b/logic/minecraft/MinecraftProcess.cpp @@ -238,8 +238,27 @@ void MinecraftProcess::arm() QString allArgs = args.join(", "); emit log("Java Arguments:\n[" + censorPrivateInfo(allArgs) + "]\n\n"); - // instantiate the launcher part - start(JavaPath, args); + QString wrapperCommand = m_instance->settings()->get("WrapperCommand").toString(); + if(!wrapperCommand.isEmpty()) + { + auto realWrapperCommand = QStandardPaths::findExecutable(wrapperCommand); + if (realWrapperCommand.isEmpty()) + { + emit log(tr("The wrapper command \"%1\" couldn't be found.").arg(wrapperCommand), MessageLevel::Warning); + m_instance->cleanupAfterRun(); + emit launch_failed(m_instance); + m_instance->setRunning(false); + return; + } + emit log("Wrapper command is:\n" + wrapperCommand + "\n\n"); + args.prepend(JavaPath); + start(wrapperCommand, args); + } + else + { + start(JavaPath, args); + } + if (!waitForStarted()) { //: Error message displayed if instace can't start -- cgit v1.2.3