在Ubuntu上能否运行Windows 10的UWP应用程序?

Ubuntu可以使用Wine来运行传统的.exe应用程序。然而,我有一些通过Windows商店安装的通用Windows平台(以下简称UWP)应用程序(以.appx和.msix为后缀),我想要运行它们。目前,我使用的是Windows 10和Ubuntu 16.04的双启动设置,我主要只使用Windows来运行UWP应用程序。我真的很想在不断重启的情况下完全使用Ubuntu。
目前为止,Wine不支持UWP应用程序。除了在VMware或VirtualBox中运行之外,是否还有其他虚拟设置(类似于Wine)可以运行UWP应用程序?

7我认为你自己回答了你的问题。Linux不是Windows的替代品,如果你想运行Windows应用程序,我建议双系统启动、虚拟化,或者更好地寻找适用于Linux的应用程序。Wine并不能适用于所有情况,并且配置常常很复杂。 - Panther
虚拟化应该是探索的首选。它几乎总是比Wine更好的答案。那些应用程序只能在普通Windows上运行。 - Rinzwind
1有一个在Stackoverflow上的旧问题也可以回答这个问题。链接 - androbin
@Panther为什么?喝酒有什么问题吗?如果我需要经常使用一个应用程序,为什么我要这样做呢? - 2xMax
11可能是如何在Linux上运行Windows Store应用程序的重复问题。 - user47206
https://askubuntu.com/a/1111886/47206 - user47206
@cipricus 我的问题早在几个月前就提出了。你链接的那个问题不是我的问题的重复吗? - user732542
3@AdityaRadhakrishnan 关于重复关闭的方向,请参阅此meta.SE问题我们meta上的这个问题。在这种情况下,您的问题质量很高,但是它没有答案,而另一个问题已经有了答案。那里的答案是有用且可能正确的,尽管它可能需要一些解释。希望会有另一个回答发布,要么提供不使用虚拟化的方法,要么(更有可能)详细解释为什么这是一个迄今未解决的难题。 - Eliah Kagan
相关的SO链接:在Linux、Mac等平台上,基于dotNET Core,是否可以使用通用Windows平台(UWP)进行工作?,但其中的信息可能已经过时。 - user37165
相关文章:“安全可预测”的Windows 10 S不支持Linux,微软表示 - ZDNet澄清了一些关于UWP的困惑,但并没有直接回答。 - user37165
在RPI.SE上相关的问题:在Raspbian上使用UWP应用暗示这是不可能的(2016年),但只是凭经验而没有任何文档链接。 - user37165
宽限期提示:赏金未能鼓励人们撰写答案,反而只收到了一个剽窃的答案,没有更好的参考资料。我想填补这个空缺的唯一方法就是撰写社区Wiki。 - user37165
4个回答

可以运行UWP应用程序,至少对于某些应用程序是可能的。我已经成功地运行了Trello UWP应用程序(该应用程序仅在Microsoft Store中提供)。
首先,您需要获取UWP应用的.appx文件。一种在没有Windows或Microsoft Store的情况下实现这一点的方法是使用这个网站: https://store.rg-adguard.net/ 将应用的Microsoft Store URL粘贴到该网站中。例如,Trello应用的URL是: https://www.microsoft.com/en-us/p/trello/9nblggh4xxvw 这将为您提供通过Microsoft Store提供的所有文件的链接。您只需要.appx文件,可能有多个版本可供选择(例如x86和x64)。
Chrome不希望您仅通过点击链接来下载文件。这使得该网站一开始给人一种不太可靠的感觉。在Chrome的DevTools控制台中,Chrome表示它不会下载该文件,因为Microsoft Store的URL使用http://,而该网站使用https://。但由于该文件直接来自microsoft.com,对我来说感觉很安全。
右键点击链接,选择“另存为”,并选择“保留”可以让您下载该文件,尽管Chrome有异议。

一旦你拥有了.appx文件,你可以解压它。它只是一个普通的zip文件,所以运行像unzip -d output-dir file.appxatool -x file.appx这样的命令。

解压后的文件应该有一个名为"app"的目录,其中包含应用程序的可执行文件和其他文件。

对于Trello应用程序,我只需在"app"目录中运行wine Trello.exe就可以了。但其他应用程序可能不会立即起作用,如果安装过程中发生更复杂的情况。


我在我的案例中找到了可执行文件WhiteboardWRT.exe。上面的链接提到使用Trello示例来“只需在应用程序目录中运行wine Trello.exe”。我猜我首先要在终端中进入该目录,然后在我的情况下运行“wine WhiteboardWRT.exe”。如果是这样的话,我应该使用什么命令来进入目录呢? - Yann Monnier
这项工作如果只是封装在APPX中,或者与任何奇特的API(例如UWP)相关,或者存在任何完整的依赖(例如许多相关的APPX文件),那么该应用程序将无法正常工作。 - Adam Ł.
太长了,懒得读。用 wine 运行它。 - Mikolasan

目前没有其他方法可以做到这一点,除非在虚拟机中运行。需要此功能的人数非常少,而且具备相关技能和足够时间来完成这项任务的人几乎为零。

微软商店/UWP有没有任何关于葡萄酒的更新? - Adam Ł.

基本上,问题不在于如何运行UWP应用程序,而在于如何在Wine上克隆Microsoft Store。如果Microsoft Store能够在Wine上重新创建,则可以下载和安装任何UWP应用程序。 类似于这样: https://github.com/kkkgo/LTSC-Add-MicrosoftStore

理论上,在Linux上为WINE添加对UWP应用的支持可能涉及以下步骤:
1. 充分了解UWP应用使用的Windows Runtime API。这将涉及研究API文档,并检查UWP应用在Windows 10上是如何构建和执行的。
2. 充分了解WINE的内部结构,包括其架构和为在Linux上运行的Windows应用程序提供的功能。
3. 开发一个兼容层,模拟Windows Runtime API的功能,使得UWP应用可以在Linux上使用WINE来执行。这个兼容层很可能需要用C或C++实现,因为WINE主要是用这两种语言编写的。
4. 对兼容层进行全面测试,确保它提供了必要的功能,并在使用WINE在Linux上执行UWP应用时表现正确。
5. 将兼容层集成到WINE代码库中,并再次进行测试,确保它与WINE的其他部分正常工作。
6. 发布支持UWP应用的更新版本的WINE,并使其可供他人使用。