| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using System;
- using System.Diagnostics;
- using System.Runtime.InteropServices;
- using System.Threading.Tasks;
- using Debug = UnityEngine.Debug;
- using Path = System.IO.Path;
- namespace ET
- {
- public static class ProcessHelper
- {
- public static System.Diagnostics.Process Run(string exe, string arguments, string workingDirectory = ".", bool waitExit = false)
- {
- //Log.Debug($"Process Run exe:{exe} ,arguments:{arguments} ,workingDirectory:{workingDirectory}");
- try
- {
- bool redirectStandardOutput = false;
- bool redirectStandardError = false;
- bool useShellExecute = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
-
- if (waitExit)
- {
- redirectStandardOutput = true;
- redirectStandardError = true;
- useShellExecute = false;
- }
-
- ProcessStartInfo info = new ProcessStartInfo
- {
- FileName = exe,
- Arguments = arguments,
- CreateNoWindow = true,
- UseShellExecute = useShellExecute,
- WorkingDirectory = workingDirectory,
- RedirectStandardOutput = redirectStandardOutput,
- RedirectStandardError = redirectStandardError,
- };
- System.Diagnostics.Process process = System.Diagnostics.Process.Start(info);
- if (waitExit)
- {
- process.WaitForExit();
- }
- return process;
- }
- catch (Exception e)
- {
- throw new Exception($"dir: {Path.GetFullPath(workingDirectory)}, command: {exe} {arguments}", e);
- }
- }
- }
- }
|