以编程方式打开一个 Windows 应用程序,当它与 MSIX 应用程序打包器一起安装时

问题描述

我已经使用 Visual Studio MSIX 打包项目打包了我的 Windows 应用程序:这是一个旁加载应用程序,使用证书,而不是 Microsoft Store 应用程序。 这很好 - 我获得了自动更新,并且用户无需管理员权限即可安装该软件包。

我希望能够从另一个应用程序打开此应用程序。 在这之前很简单 - 只需使用应用程序路径调用 Process.Start:“C:\Program Files\MyCompany\MyApp.exe”

但是隐藏了 MSIX 安装应用程序的可执行文件我怀疑它在“C:\

在 C:\Users\MyUser\AppData\Local\Packages{myappguid} 中似乎有一些有关安装的数据 - 但此处没有可用的可执行文件

所以我的问题很简单:当应用程序是使用 MSIX 应用程序打包程序安装时,如何从另一个程序启动应用程序?

解决方法

事实证明这相当简单。

编辑您的 Package.appmanifest 并在 Application 元素中添加以下内容

<Extensions>
  <uap5:Extension Category="windows.appExecutionAlias">
    <uap5:AppExecutionAlias>
      <uap5:ExecutionAlias Alias="MyApp.exe"/>
    </uap5:AppExecutionAlias> 
  </uap5:Extension>
</Extensions>

并确保在清单文件 xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" 的顶部引用此命名空间 并且也在可忽略的命名空间中。

重建并重新安装 MSIX。

在新的命令提示符下测试 - 只需输入 MyApp.exe - 它应该会打开应用程序。

现在第二个程序可以执行 Process.Start("MyApp.exe") 并且可以工作了。

参考:https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap5-extension