运行“应用程序参考”

时间:2010-08-23 14:30:55

标签: c# executable applicationreference

我需要我的应用程序(Master)在特定事件上运行另一个应用程序(Worker)。

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

如果我将我的Worker应用程序作为ClickOnce应用程序分发,它会创建一个应用程序引用,我可以从Process.Start开始(一旦我将它的副本放在与我的主人相同的目录中.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 个答案:

答案 0 :(得分:1)

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

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