public IActionResult ExecuteFile([FromBody] ExecuteFileDto executeDto, [FromQuery] bool waitForExit) { var processStartInfo = new ProcessStartInfo(executeDto.FileName, executeDto.Arguments) { WorkingDirectory = executeDto.WorkingDirectory ?? string.Empty, UseShellExecute = executeDto.UseShellExecute, Verb = executeDto.Verb, CreateNoWindow = executeDto.CreateNoWindow }; var process = Process.Start(processStartInfo); if (executeDto.UseShellExecute) { return(Ok()); } if (process == null) { return(StatusCode(StatusCodes.Status500InternalServerError)); } if (waitForExit) { process.WaitForExit(); } return(Ok()); }
public void Initialize(FileViewModel fileViewModel, ITargetedRestClient restClient) { _fileViewModel = fileViewModel; _restClient = restClient; ExecuteDto = new ExecuteFileDto { FileName = fileViewModel.Source.Path }; if (!ExecuteDto.FileName.EndsWith(".exe")) { ExecuteDto.UseShellExecute = true; } }
public static Task ExecuteFile(ExecuteFileDto dto, bool waitForExit, ITargetedRestClient restClient) => CreateRequest(HttpVerb.Post, "file/execute", dto).AddQueryParam("waitForExit", waitForExit.ToString()).Execute(restClient);