我部署了一个ClickOnce Windows Forms应用程序(App A)
另一个应用程序(App B)通过文件名参数启动App A。我使用以下代码实现:
var basePath = Environment.GetFolderPath(Environment.SpecialFolder.Programs);
var location = String.Format(@"{0}\{1}\{2}\{3}",
basePath, "MyCompany", "MyProduct", "MyApp.appref-ms");
var fileName = @"c:\temp\somefile.ext";
var uri = new Uri(fileName).ToString();
Process.Start(location, uri);
App A从AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0]
获取文件名并显示内容。
这个功能非常好用。但是,现在我想让App B等待App A退出。
但是调用Process.WaitForExit()
会立即返回。
有没有一种方法可以打开一个ClickOnce应用程序并等待它退出? 如果必要的话,我可以改变打开应用程序的方式,但要求我必须将应用程序作为ClickOnce应用程序运行(我知道在我的用户配置文件中AppData\Local\Apps\2.0\
文件夹中存在exe可直接启动,但如果我这样做,ApplicationDeployment.IsNetworkDeployed
会返回false
,ApplicationDeployment.CurrentDeployment
也是空的。这样我就失去了ClickOnce更新能力)。
System.Reflection.Assembly.GetEntryAssembly().Location;
轻松实现,并且可以正常工作。然而,我的应用程序是设计为从另一个应用程序调用的,不会直接启动。如果我这样做,我将失去自更新功能,这是使用 ClickOnce 的主要原因。 - Jürgen Steinblock