protected Process LaunchImplementation() { if (Requirements.Command == "") { throw new OptionException(Resources.NoRunWithEmptyCommand, "--command"); } using (CreateRunHook()) { try { return(Executor.Start(Selections, AdditionalArgs.ToArray())); } #region Error handling catch (KeyNotFoundException ex) { // Gracefully handle broken external selections if (SelectionsDocument) { throw new InvalidDataException(ex.Message, ex); } else { throw; } } #endregion } }
protected Process LaunchImplementation() { if (Requirements.Command == "") { throw new OptionException(Resources.NoRunWithEmptyCommand, "command"); } using (CreateRunHook()) return(Executor.Start(Selections, AdditionalArgs.ToArray())); }
protected Process?LaunchImplementation() { Debug.Assert(Selections != null); if (Requirements.Command == "") { throw new OptionException(Resources.NoRunWithEmptyCommand, "command"); } return(Executor.Inject(Selections, _overrideMain) .AddWrapper(_wrapper) .AddArguments(AdditionalArgs.ToArray()) .Start()); }
/// <inheritdoc/> public override ExitCode Execute() { if (Requirements.Command == "") { throw new OptionException(Resources.NoRunWithEmptyCommand, "command"); } Solve(); DownloadUncachedImplementations(); Handler.CancellationToken.ThrowIfCancellationRequested(); Handler.DisableUI(); var process = Executor.Inject(Selections, _overrideMain) .AddWrapper(_wrapper) .AddArguments(AdditionalArgs.ToArray()) .SetEnvironmentVariable(ZeroInstallEnvironment.FeedUriName, Requirements.InterfaceUri.ToStringRfc()) .SetCallbackEnvironmentVariables() .Start(); CloseUI(process); BackgroundUpdate(); BackgroundSelfUpdate(); if (process == null) { Log.Warn("No process launched"); return(ExitCode.OK); } else if (_noWait) { Log.Debug("Not waiting for program to exit"); return(WindowsUtils.IsWindows ? (ExitCode)process.Id : ExitCode.OK); } else { Log.Debug("Waiting for program to exit"); return((ExitCode)process.WaitForExitCode()); } }
/// <inheritdoc/> public override ExitCode Execute() { if (Requirements.Command == "") { throw new OptionException(Resources.NoRunWithEmptyCommand, "command"); } Solve(); DownloadUncachedImplementations(); Handler.CancellationToken.ThrowIfCancellationRequested(); Handler.DisableUI(); var process = Executor.Inject(Selections, _overrideMain) .AddWrapper(_wrapper) .AddArguments(AdditionalArgs.ToArray()) .Start(); Handler.CloseUI(); BackgroundUpdate(); BackgroundSelfUpdate(); if (process == null) { return(ExitCode.OK); } if (_noWait) { return(WindowsUtils.IsWindows ? (ExitCode)process.Id : ExitCode.OK); } else { Log.Debug("Waiting for application to exit"); process.WaitForExit(); return((ExitCode)process.ExitCode); } }