2010-08-23 70 views
0

我需要我的应用程序(主)在特定事件上运行另一个应用程序(Worker)。运行“应用程序参考”

如果我将我的Worker应用程序作为标准可执行文件分发,那么一切都很好,我可以毫无问题地使用Process.Start并愉快地传入参数并调用WaitForExit。

如果分发我工作者应用的ClickOnce应用程序,它创建了一个应用程序引用,这是我可以用的Process.Start启动(一旦我把它的一个副本在同一目录作为我Master.exe)但我不能传递它的参数或使用WaitForExit。

我希望能够同时做到这两点。我怀疑调用参考启动该工人可执行实际运行另一个程序

我的代码:

// This works as I expect, and returns a valid Process. 
Process p0 = Process.Start("Worker.exe", "DoSomeMagic"); 
// This seems to work, but returns null. 
Process p1 = Process.Start("Worker.appref-ms"); 
// This also returns null, but does not pass the argument to Worker. 
Process p2 = Process.Start("Worker.appref-ms", "DoSomeMagic"); 

我的问题:

我怎么做这个“正常”?

回答

1

默认情况下,ClickOnce应用程序不允许传递命令行参数(或者,在他们的情况下,参数是查询字符串)。您需要在清单文件中配置适当的选项以允许它们,但即使如此,仍有几个需要注意的注意事项。整个ClickOnce平台对应用程序的执行方式以及它们如何启动施加了一些非常恶劣的限制。当然,这都是在安全的幌子下,但我个人认为这是短视。

有关如何将参数传递给ClickOnce应用程序的更多信息:http://msdn.microsoft.com/en-us/library/ms172242.aspx