protected override void Execute(CodeActivityContext context) { var filename = Filename.Get(context); var arguments = Arguments.Get(context); var workingdirectory = WorkingDirectory.Get(context); var waitforexit = WaitForExit.Get(context); var waitforexittimeout = WaitForExitTimeout.Get(context); ProcessStartInfo startInfo = new ProcessStartInfo(); filename = Environment.ExpandEnvironmentVariables(filename); startInfo.FileName = filename; startInfo.Arguments = arguments; startInfo.WorkingDirectory = workingdirectory; var p = Process.Start(startInfo); if (waitforexit) { if (waitforexittimeout.TotalMilliseconds > 50) { p.WaitForExit((int)waitforexittimeout.TotalMilliseconds); } else { p.WaitForExit(); } } }
protected void ValidateInputArguments(CodeActivityContext context) { ValidateWorkingDirectory(context); ValidateFilename(context, true); // For processes we want to look in directories from PATH if (WaitForExit.Get(context) && WaitForExitTimeout.Get(context) == 0) { throw new ArgumentException("WaitForExit is set to True but the WaitForExitTimeout is 0."); } }
protected override void Execute(CodeActivityContext context) { ValidateInputArguments(context); var processInvokeWrapper = new RunProcessWrapper(FileName.Get(context), Arguments.Get(context), WorkingDirectory.Get(context), CaptureOutput.Get(context), WaitForExit.Get(context), WaitForExitTimeout.Get(context), KillAtTimeout.Get(context)); processInvokeWrapper.StartProcess(); ProcessId.Set(context, processInvokeWrapper.ProcessId); Finished.Set(context, processInvokeWrapper.Finished); Output.Set(context, processInvokeWrapper.StandardOutput); Error.Set(context, processInvokeWrapper.StandardError); ExitCode.Set(context, processInvokeWrapper.ExitCode); }
public void WriteXml(XmlWriter writer) { if (ID == Guid.Empty) { ID = Guid.NewGuid(); } writer.WriteStartElement("Application"); writer.WriteAttributeString("ID", ID.ToString()); writer.WriteAttributeString("Name", Name); writer.WriteAttributeString("RelativePath", RelativePath); writer.WriteAttributeString("Arguments", Arguments); writer.WriteAttributeString("WaitForExit", WaitForExit.ToString()); writer.WriteAttributeString("SuccessExitCode", SuccessExitCode.ToString()); writer.WriteAttributeString("DistributionOnly", DistributionOnly.ToString()); foreach (DistributionSource source in Sources) { source.WriteXml(writer); } writer.WriteEndElement(); }