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

Open a Windows app programmatically, when it was installed with MSIX Application Packager

我已经使用 Visual Studio MSIX 打包项目打包了我的 windows 应用程序:这是一个旁加载应用程序,使用证书,而不是 Microsoft Store 应用程序。 这很好 - 我得到了自动更新,用户可以在没有管理员权限的情况下安装包。

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

然而,安装了 MSIX 的应用程序的可执行文件是隐藏的,我怀疑它在“C:\Program Files\WindowsApps”中,但是这个文件夹是受限的,即使有管理员权限我也无法访问

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