/// Copyright 2017 Kopano b.v. /// /// This program is free software: you can redistribute it and/or modify /// it under the terms of the GNU Affero General Public License, version 3, /// as published by the Free Software Foundation. /// /// This program is distributed in the hope that it will be useful, /// but WITHOUT ANY WARRANTY; without even the implied warranty of /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the /// GNU Affero General Public License for more details. /// /// You should have received a copy of the GNU Affero General Public License /// along with this program.If not, see. /// /// Consult LICENSE file for details using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace OutlookRestarter { class Program { /// /// Entry point. /// Arguments: /// 0 - parent pid /// 1 - parent path /// 2 - arguments /// n - ... /// /// [STAThread] static void Main(string[] args) { string procPath = args[1]; var procArgs = args.Skip(2); try { // Attempt waiting for the process to finish int procId = int.Parse(args[0]); Process proc = Process.GetProcessById(procId); proc.WaitForExit(15000); } finally { // Start the process Process process = new Process(); process.StartInfo = new ProcessStartInfo(procPath, string.Join(" ", procArgs)); process.Start(); } } } }