跳转到主要内容

Windows Store 指南

随着 Windows 10 的发布,传统的 win32 可执行文件迎来了一个新的伙伴:通用 Windows 平台。新的 .appx 格式不仅启用了许多强大的 API,例如 Cortana 或推送通知,而且通过 Windows Store,简化了安装和更新。

Microsoft 开发了一个工具,可以将 Electron 应用编译为 .appx,使开发者能够使用新型应用程序模型中的一些优势。本指南解释了如何使用它 - 以及 Electron AppX 包的功能和限制。

背景和要求

Windows 10 “周年更新”能够运行 win32 .exe 二进制文件,方法是将它们与虚拟文件系统和注册表一起启动。两者都在编译期间通过在 Windows 容器内运行应用程序和安装程序来创建,从而允许 Windows 准确识别安装过程中对操作系统所做的修改。将可执行文件与虚拟文件系统和虚拟注册表配对,允许 Windows 实现一键安装和卸载。

此外,exe 文件在 appx 模型中启动 - 这意味着它可以利用通用 Windows 平台可用的许多 API。为了获得更多功能,Electron 应用可以与一起启动的不可见的 UWP 后台任务配对 - 类似于作为助手启动,以在后台运行任务、接收推送通知或与其他 UWP 应用程序通信。

要编译任何现有的 Electron 应用,请确保您具备以下要求

  • 带有周年更新的 Windows 10(发布于 2016 年 8 月 2 日)
  • Windows 10 SDK,可在此处下载
  • 至少 Node 4(要检查,请运行 node -v

然后,安装 electron-windows-store CLI

npm install -g electron-windows-store

步骤 1:打包您的 Electron 应用程序

使用 @electron/packager(或类似工具)打包应用程序。确保删除最终应用程序中不需要的 node_modules,因为您不需要的任何模块都会增加应用程序的大小。

输出应大致如下所示

├── Ghost.exe
├── LICENSE
├── content_resources_200_percent.pak
├── content_shell.pak
├── d3dcompiler_47.dll
├── ffmpeg.dll
├── icudtl.dat
├── libEGL.dll
├── libGLESv2.dll
├── locales
│   ├── am.pak
│   ├── ar.pak
│   ├── [...]
├── node.dll
├── resources
│   └── app.asar
├── v8_context_snapshot.bin
├── squirrel.exe
└── ui_resources_200_percent.pak

步骤 2:运行 electron-windows-store

从提升权限的 PowerShell(以“管理员”身份运行),使用所需的参数运行 electron-windows-store,传递输入和输出目录、应用程序的名称和版本,以及确认应展平 node_modules

electron-windows-store `
--input-directory C:\myelectronapp `
--output-directory C:\output\myelectronapp `
--package-version 1.0.0.0 `
--package-name myelectronapp

执行后,该工具开始工作:它将您的 Electron 应用作为输入,展平 node_modules。然后,它将您的应用程序归档为 app.zip。使用安装程序和 Windows 容器,该工具创建一个“展开”的 AppX 包 - 包括 Windows 应用程序清单 (AppXManifest.xml) 以及输出文件夹内的虚拟文件系统和虚拟注册表。

创建展开的 AppX 文件后,该工具使用 Windows 应用打包程序 (MakeAppx.exe) 从磁盘上的这些文件创建单个 AppX 包。最后,该工具可用于在您的计算机上创建受信任的证书以签署新的 AppX 包。使用签名的 AppX 包,CLI 还可以自动将该包安装到您的机器上。

步骤 3:使用 AppX 包

为了运行您的包,您的用户需要带有“周年更新”的 Windows 10 - 有关如何更新 Windows 的详细信息,请参见 此处

与传统的 UWP 应用不同,打包的应用当前需要经过手动验证过程,您可以在 此处申请。与此同时,所有用户都可以通过双击它来安装您的包,因此如果您正在寻找更简单的安装方法,则可能不需要提交到商店。

另一个重要的限制是,编译的 AppX 包仍然包含一个 win32 可执行文件 - 因此无法在 Xbox、HoloLens 或手机上运行。

可选:使用后台任务添加 UWP 功能

您可以将您的 Electron 应用与一个不可见的 UWP 后台任务配对,该任务可以充分利用 Windows 10 功能 - 例如推送通知、Cortana 集成或动态磁贴。

要查看如何使用后台任务发送吐司通知和动态磁贴的 Electron 应用,请查看 Microsoft 提供的示例

可选:使用容器虚拟化转换

为了生成 AppX 包,electron-windows-store CLI 使用一个应该适用于大多数 Electron 应用的模板。但是,如果您正在使用自定义安装程序,或者在生成的包遇到任何问题,您可以尝试使用 Windows 容器编译来创建包 - 在这种模式下,CLI 将在空白 Windows 容器中安装和运行您的应用程序,以确定您的应用程序正在对操作系统进行哪些确切修改。

首次运行 CLI 之前,您需要设置“Windows 桌面应用转换器”。这将需要几分钟,但不用担心 - 您只需要执行此操作一次。从 此处下载桌面应用转换器。您将收到两个文件:DesktopAppConverter.zipBaseImage-14316.wim

  1. 解压缩 DesktopAppConverter.zip。从提升权限的 PowerShell(以“以管理员身份运行”打开,确保您的系统执行策略允许我们运行我们打算运行的所有内容,方法是调用 Set-ExecutionPolicy bypass
  2. 然后,运行桌面应用转换器的安装,通过调用 .\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim 传递 Windows 基本映像的位置(下载为 BaseImage-14316.wim)。
  3. 如果运行上述命令提示您重新启动,请重新启动您的机器并在成功重新启动后再次运行上述命令。

安装成功后,您可以继续编译您的 Electron 应用。