【问题标题】:Launch a second instance of a WPF application from within the first从第一个 WPF 应用程序中启动第二个实例
【发布时间】:2012-08-02 14:07:04
【问题描述】:

如果我们的独立应用程序只是一个下载的 .exe 文件(即使用 Windows 安装程序部署),让正在运行的实例使用 System.Diagnostics.Process.Start 启动第二个实例将相当简单。不幸的是,我们的 WPF 应用程序是通过 VIA ClickOnce 部署的,因此据我所知没有本地文件系统路径。

如何启动正在运行的 ClickOnce 应用程序的第二个实例? (如果可能的话,传递命令行参数。)

【问题讨论】:

  • 不是这个stackoverflow.com/questions/1890634/…的副本,但它可能会有所帮助
  • 我只是好奇:为什么您需要有两个应用程序实例?
  • @PiotrPtak 我的应用程序加载了给定“程序”的所有详细信息和配置选项(一个包含大约 20 个模块的复杂对象模型,每个模块包含十几个表、列表和属性)。如果用户希望并排加载第二个“程序”,最简单的解决方案是让他们启动第二个实例。他们希望通过在引用另一个“程序”的任何地方都有一个可点击的“链接”来从第一个实例启动第二个实例,从而使这更容易。
  • 如果您知道应用程序的部署 URL,您只需对其执行 Process.Start,它就会安装或运行它。

标签: c# wpf .net-4.0 clickonce


【解决方案1】:

您错了:在您的本地应用程序数据文件夹下有一个本地路径。或者,您可以使用 Uri 重新启动应用程序。简而言之,您应该能够像处理常规应用程序一样计算出应用程序的启动路径(可能使用Environment.CommandLineSystem.Diagnostics.Process.GetCurrentProcess().MainModule.FileName),然后使用它。

【讨论】:

    【解决方案2】:

    嗯,当您通过 clickonce 部署它时,会有一个本地文件系统路径。试试

    yourWindow.GetType().Assembly.Location
    

    -> 这将为您提供程序集的完整路径。

    【讨论】:

    • 不好,确切的代码只返回MUS, Version=6.2.0.0, Culture=neutral, PublicKeyToken=nullMUS 是我的应用程序的名称。
    • 对不起老兄,我的意思是“位置”,而不是“全名”
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多