为什么现代应用程序的 .exe 文件无法运行并产生有关应用程序容器的错误?

为什么现代应用程序的 .exe 文件无法运行并产生有关应用程序容器的错误?

文件夹内C:\Program Files\WindowsApplications有我电脑上的 Modern Apps 的 .exe 文件。当我双击其中一个时,弹出窗口告诉我:

This application can run only in the context of an app container

有没有办法直接从其.exe 文件运行现代应用程序,而不仅仅是通过其磁贴?

先感谢您!

附言:我使用的是 Windows 10 技术预览版。

答案1

在 Windows 8 之前,您可以拥有“独立”的 .exe 应用程序。安装主要是为了创建链接和引用,以便应用程序轻松找到所需的内容并运行。如果应用程序所需的一切都由应用程序本身提供,则无需安装即可运行。应用程序容器是 Win 8 引入的安全概念。无需安装,应用程序就可以访问自己的文件夹,而其他内容很少,包括大多数设备。应用程序必须设计为与应用程序容器配合使用才能安装。这关联对该概念及其工作原理进行了详尽的描述。

编辑:对于已安装的应用程序,似乎所有的关联和权限都附加到图块,因此无法直接运行.exe。

答案2

您可以使用 explorer.exe shell 命令从命令行运行 Windows 现代应用程序,如下所示:

explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>

或者,通过 start,如果您需要传递参数,建议这样做:

start shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID> arg1 arg2

诀窍在于发现程序包名称、发布者 ID 和应用 ID。如果所有这些信息都可以在 Microsoft Store 的应用程序列表中、任务管理器中或应用程序的“设置”->“应用和功能”列表中找到,那就太好了。到目前为止,我发现没有简单的方法来收集这三条信息。以下是使用任务管理器和文件资源管理器执行此操作的步骤,复制自我的博客文章

  1. 像平常一样从“开始”菜单、任务栏等打开现代应用程序。
  2. 启动任务管理器(我右键单击 Windows 任务栏并选择“任务管理器”)
  3. 展开您感兴趣的应用列表,右键单击子项,然后选择“转到详细信息”
  4. 右键单击突出显示的可执行文件并选择“打开文件位置”
  5. 如果您知道如何解析它们,您刚打开的目录名称将为您提供程序包名称和发布者 ID。以日历应用为例,目录名称“microsoft.windowscommunicationsapps_16005.12827.20560.0_x64__8wekyb3d8bbwe”以程序包名称(“microsoft.windowscommunicationsapps”)开头,后面是您不需要的版本和平台信息(“16005.12827.20560.0_x64”),然后是发布者 ID(“8wekyb3d8bbwe”)。请记下程序包名称和发布者 ID,以供日后使用。
  6. 打开该目录中的 AppxManifest.xml 文件
  7. 在 AppxManifest.xml 文件的顶部附近,你会发现一个 Identity 元素,它有一个 Name 属性——确认这个值与我们已从目录名称中得到的包名称相匹配
  8. 在 AppxManifest.xml 文件中搜索可执行文件名称,例如 HxCalenderAppImm.exe,您将找到如下所示的 XML 元素:
这将为您提供所需的第三条信息:应用程序 ID。

现在您已经收集了我们需要的三条信息,您可以构建从命令行打开应用程序的命令。

  1. 您的命令将如下所示,用上面收集的三条信息替换各部分:

    explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>

继续使用邮件和日历包中的日历应用程序的示例,您将输入如下内容:

explorer.exe shell:AppsFolder\microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar

亲爱的微软:请让这变得更容易!

答案3

我相信现在至少在某种程度上是可以的。例如,“Windows Scan”应用程序可以变成以“Microsoft.WindowsScan_8wekyb3d8bbwe!App”为目标的快捷方式。

相关内容