跨进程:我用大白话理解,就是一个主程序调用另一个程序的过程。
当前使用框架:WPF
设计模式:MVVM
主程序
view
Command="{Binding Path=方法名}"
viewmodel
private RelayCommand 变量名;
public RelayCommand 方法名字=> 方法名字?? (变量名= new RelayCommand(() =>
{
try
{
//程序中相对路径
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"该文件夹里\被调用的程序名字.exe");
if (File.Exists(path))
{
var startInfo = new ProcessStartInfo(path)
{
//调用的是 CreateProcess
UseShellExecute = false,
//不显示程序窗口
CreateNoWindow = true,
//设置启动动作,确保以管理员身份运行
Verb = "runas",
//设置启动参数
Arguments = ApplicationContext.Context.CurrentVersionRoot.data.version + " " + ApplicationContext.Context.CurrentVersionRoot.data.fileUrl,
//外部启动程序运行路径
WorkingDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"被调用的程序名字")
};
//启动外部程序
Process process = Process.Start(startInfo);
//监视进程退出
process.EnableRaisingEvents = true;
}
else
{
EventManager.CurrentEvent.PublishErrorMessage(true, "更新程序未找到,请检查是否集成!");
}
}
catch (Exception ex)
{
Logs.CureentLogs.WriteLog("启动更新程序失败", ex);
EventManager.CurrentEvent.PublishErrorMessage(true, "启动更新程序失败!" + ex.Message);
}
}));
调用子程序
Release下的文件放到主程序中,上面写好的相对路径文件下