using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace AutoUpdate.Helper
{
public class ProcessHelper
{
private static ProcessHelper instance;
public static ProcessHelper Instance
{
get
{
if (instance == null) instance = new ProcessHelper();
return ProcessHelper.instance;
}
}
/// <summary>
/// 关闭进程
/// </summary>
/// <param name="processName">进程名</param>
public void KillProcessByName(string processName)
{
try
{
Process[] myproc = Process.GetProcesses();
foreach (Process item in myproc)
{
if (item.ProcessName == processName)
{
item.CloseMainWindow();
item.Kill();
}
}
}
catch { return; }
}
/// <summary>
/// 启动进程
/// </summary>
/// <param name="processName">进程名,完全限定名</param>
public void StartProcessByName(string processName)
{
System.Diagnostics.Process.Start(processName);
//Process process = new Process();//声明一个进程类对象
//process.StartInfo.FileName = processName;//Application.StartupPath + "\\AutoUpdate.exe";
//process.Start();
}
}
}
//初始路径 + 自动更新程序名称 + 主程序名称
string param = fullPath + ","
+ "AutoUpdate\\AutoUpdate.exe," //自动更新程序
+ "Debug\\AutoUpdateApp.exe,"//主程序
+ "Debug";//下载包
//AutoUpdate
Process p = new Process();//声明一个进程类对象
p.StartInfo.FileName = fullPath + "AutoUpdate\\AutoUpdate.exe";
p.StartInfo.UseShellExecute = true;
p.StartInfo.Arguments = param;//第一个参数为需要下载的压缩文件,第二个为需要启动的程序
p.Start();
注:被启动的应用使用方式如下所示:
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException)
//MessageBox.Show("参数==" + args[0]);
InitVariable(args);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
private static void InitVariable(string[] args)
{
//VariableHelper.Instance.UpdateExeDir = ConfigurationManager.AppSettings["UpdateExeDir"];
string[] param = args[0].Split(',');
VarHelper.Instance.InitPath = param[0];
VarHelper.Instance.AutoUpdateExe = param[1];
VarHelper.Instance.MainExe = param[2];
VarHelper.Instance.DownDir = param[3];
}