コード例 #1
0
        public CommandResult Execute(CommandLineInvocation invocation)
        {
            try
            {
                var exitCode = SilentProcessRunner.ExecuteCommand(
                    invocation.Executable,
                    invocation.Arguments,
                    invocation.WorkingDirectory,
                    invocation.EnvironmentVars,
                    invocation.UserName,
                    invocation.Password,
                    commandOutput.WriteInfo,
                    commandOutput.WriteError);

                return(new CommandResult(
                           invocation.ToString(),
                           exitCode.ExitCode,
                           exitCode.ErrorOutput,
                           invocation.WorkingDirectory));
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex);
                Console.Error.WriteLine("The command that caused the exception was: " + invocation);
                return(new CommandResult(
                           invocation.ToString(),
                           -1,
                           ex.ToString(),
                           invocation.WorkingDirectory));
            }
        }
コード例 #2
0
        public CommandResult Execute(string scriptFile, CalamariVariableDictionary variables, ICommandLineRunner commandLineRunner)
        {
            var workingDirectory = Path.GetDirectoryName(scriptFile);

            var executable = PowerShellBootstrapper.PathToPowerShellExecutable();
            var boostrapFile = PowerShellBootstrapper.PrepareBootstrapFile(scriptFile, variables);
            var arguments = PowerShellBootstrapper.FormatCommandArguments(boostrapFile);

            using (new TemporaryFile(boostrapFile))
            {
                var invocation = new CommandLineInvocation(executable, arguments, workingDirectory);
                return commandLineRunner.Execute(invocation);
            }
        }
コード例 #3
0
        protected virtual List <ICommandInvocationOutputSink> GetCommandOutputs(CommandLineInvocation invocation)
        {
            var outputs = new List <ICommandInvocationOutputSink>
            {
                new ServiceMessageCommandInvocationOutputSink(variables)
            };

            if (invocation.OutputToLog)
            {
                outputs.Add(new LogCommandInvocationOutputSink(log, invocation.OutputAsVerbose));
            }

            if (invocation.AdditionalInvocationOutputSink != null)
            {
                outputs.Add(invocation.AdditionalInvocationOutputSink);
            }

            return(outputs);
        }
コード例 #4
0
        public CommandResult Execute(CommandLineInvocation invocation)
        {
            try
            {
                var exitCode = SilentProcessRunner.ExecuteCommand(
                    invocation.Executable, 
                    invocation.Arguments,
                    invocation.WorkingDirectory,
                    commandOutput.WriteInfo,
                    commandOutput.WriteError);

                return new CommandResult(invocation.ToString(), exitCode, null);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex);
                Console.Error.WriteLine("The command that caused the exception was: " + invocation);
                return new CommandResult(invocation.ToString(), -1, ex.ToString());
            }
        }
コード例 #5
0
        public CommandResult Execute(CommandLineInvocation invocation)
        {
            var commandOutput = new SplitCommandInvocationOutputSink(GetCommandOutputs(invocation));

            try
            {
                var exitCode = SilentProcessRunner.ExecuteCommand(
                    invocation.Executable,
                    invocation.Arguments,
                    invocation.WorkingDirectory,
                    invocation.EnvironmentVars,
                    invocation.UserName,
                    invocation.Password,
                    commandOutput.WriteInfo,
                    commandOutput.WriteError);

                return(new CommandResult(
                           invocation.ToString(),
                           exitCode.ExitCode,
                           exitCode.ErrorOutput,
                           invocation.WorkingDirectory));
            }
            catch (Exception ex)
            {
                if (ex.InnerException is Win32Exception)
                {
                    commandOutput.WriteError(ConstructWin32ExceptionMessage(invocation.Executable));
                }

                commandOutput.WriteError(ex.ToString());
                commandOutput.WriteError("The command that caused the exception was: " + invocation);

                return(new CommandResult(
                           invocation.ToString(),
                           -1,
                           ex.ToString(),
                           invocation.WorkingDirectory));
            }
        }