代码之家  ›  专栏  ›  技术社区  ›  Jonathan

运行“应用程序引用”

  •  0
  • Jonathan  · 技术社区  · 14 年前

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

    如果我将我的工作应用程序作为标准的可执行文件分发,那么一切都很好,我可以使用进程。从没有问题开始,愉快地传递参数并调用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 回复  |  直到 14 年前
        1
  •  1
  •   Bradley Smith    14 年前

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

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