如何将 Electron 应用移植到 UWP for Surface Hub

How to port an Electron App to UWP for Surface Hub

我有一个应用程序目前正在使用 Electron 进行 Windows 桌面部署。用户界面的大部分是普通的旧 JS/CSS/HTML5,节点部分主要是将数据导入 Chromium 部分的基础设施。这几乎就是人们在 Firefox 之前称之为 "WebApp" 的东西,Chrome 放弃了这个想法。

我能够使用 makeappx 将这个现有的 Electron 应用程序转换为 UWP,我什至将它放入 Window 商店,却发现 Surface Hub 拒绝 运行 它,因为它不是"pure" UWP,而是一个包装成看起来像 UWP 的 Win32 应用程序。 运行 在 Surface Hub 上是我的客户的要求。

该应用程序在 Edge 中运行良好,但我的客户需要在没有互联网连接时能够使用该应用程序。

我的下一个想法是将应用程序放到闪存驱动器上,然后将 Edge 指向该驱动器。当然,浏览 file:// URL 在此硬件上不起作用,所以它不起作用。

我的下一个想法是,我可以构建一个简单的 HTTP 服务器,将其放入存储中的内容(或从闪存驱动器中读取内容),然后让它们将 Edge 指向本地主机。但是,我发现一堆文档说在 Windows Store 应用程序中禁止使用环回设备。 (有一个针对企业应用程序的解决方法,但我不知道这是否适用于 Surface Hub,而且客户真的只想从 Windows 商店安装,而不必做任何奇怪的事情)。

一年前有一些传言说微软开发了一些技术可以很容易地将网络应用程序移植到 Windows 桌面。我找到了 "Windows 10 Hosted Web Apps",但这似乎只是围绕网站制作了一个网上商店容器。就我而言,该网站将不可用,因为他们需要 运行 离线。据我所知,似乎没有 "Not Hosted" Web App 选项。

当 Chrome 托管 Web 应用程序时,我设法使用离线清单说服浏览器在您第一次 运行 时下载整个应用程序。但这从来没有可靠地工作过,因为 Chrome 会无缘无故地自发地扔掉缓存。由于 Surface Hub 在您结束会话时主动丢弃缓存,我怀疑这种方法也行不通。 (我发现了去年的一篇 Windows 博客文章,它似乎在描述这个技巧并将其称为渐进式 Web 应用程序或 PWA;但是,由于它基于缓存工作器,我对 Surface Hub 将其丢弃的担忧是成立的.)

那么,如何让我的 Web 应用程序在 Surface Hub 上脱机工作?如果有帮助,我非常乐意将闪存驱动器作为解决方案的一部分。

-- 更新--

查看已接受的答案。事实证明您不需要开发人员工作室来执行此操作。如果您创建一个 AppxManifest.xml 文件并将整个 webapp 放入一个文件夹中,您可以使用 MakeAppx.exe 将它们全部捆绑起来。请注意,Windows Store 有一些奇怪的要求,比如您的 UTF-8 文件需要在前面有 BOM。

对于您的 Electron 应用程序,您是否使用了任何原生模块?通常,如果您不依赖本机模块,创建 Windows Web 应用程序是相当简单的。对于 Windows Web 应用程序,您可以相当轻松地将本地内容与远程内容混合。