Я пробовал несколько разных подходов к запуску установки модуля, но все они терпели неудачу по одной из двух причин:
Код: Выделить всё
private static void ExecuteProcess(string directory, string argument) {
try {
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo() {
FileName = "/bin/bash",
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
CreateNoWindow = true,
WorkingDirectory = directory,
Arguments = " -c \"" + argument + " \""
};
System.Diagnostics.Process myProcess = new System.Diagnostics.Process {
StartInfo = startInfo
};
myProcess.Start();
while (!myProcess.StandardOutput.EndOfStream) {
var line = myProcess.StandardOutput.ReadLine();
UnityEngine.Debug.Log(line);
}
} catch (System.Exception e) {
UnityEngine.Debug.Log(e);
}
}
private static void TryInstallPods() {
const string BUILDS_PATH = "./Builds";
string shellScriptPath = Path.Join(BUILDS_PATH, "podinstall.sh");
// Outputs nothing
File.WriteAllText(shellScriptPath, "pod install --verbose");
ExecuteProcess(BUILDS_PATH, "sh podinstall.sh");
// Outputs "CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update"
File.WriteAllText(shellScriptPath, "/usr/local/bin/pod install --verbose");
ExecuteProcess(BUILDS_PATH, "sh podinstall.sh");
// Outputs nothing
ExecuteProcess(BUILDS_PATH, "pod install --verbose");
// Outputs "CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update"
ExecuteProcess(BUILDS_PATH, "/usr/local/bin/pod install --verbose");
// For reference, this works as expected for the build directory:
ExecuteProcess(BUILDS_PATH, "ls");
// This also works as expected:
ExecuteProcess(BUILDS_PATH, "/usr/local/bin/pod --help");
// This produces no output:
ExecuteProcess(BUILDS_PATH, "pod --help");
}
podinstall.sh
Код: Выделить всё
/usr/local/bin/pod install --verbose
- Из моего кода C# pod install --verbose не выдает никаких результатов, независимо от того, вызывается ли он напрямую или из внутри сценария оболочки.
- Из моего кода C# «/usr/local/bin/pod install --verbose» выдает вывод «CDN: Trunk Относительный путь: CocoaPods -version.yml существует! Возврат локального, поскольку проверка выполняется только при обновлении репозитория», независимо от того, вызывается ли она напрямую или из сценария оболочки. Больше ничего не происходит, и конфигурация модуля не обновляется.
Однако любой вариант работает, если я открываю терминал в папке сборки и введите там команду:
Код: Выделить всё
% pod install --verbose
% /usr/local/bin/pod install --verbose
% sh podinstall.sh
Примечание: я переформатировал код этого вопроса; этот вопрос может содержать опечатки, которых нет в исходном коде.
Подробнее здесь: https://stackoverflow.com/questions/786 ... cs-process