跳至主要内容

Windows 应用商店指南

随着 Windows 10 的发布,传统的 win32 可执行文件有了一个新的兄弟:通用 Windows 平台。新的 .appx 格式不仅启用了一系列强大的新 API(如 Cortana 或推送通知),而且通过 Windows 应用商店简化了安装和更新。

Microsoft 开发了一个工具,可以将 Electron 应用编译为 .appx,使开发人员能够使用新应用程序模型中的一些好东西。本指南介绍了如何使用它,以及 Electron AppX 包的功能和限制。

背景和要求

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

此外,exe 在 appx 模型中启动 - 这意味着它可以使用通用 Windows 平台提供的许多 API。为了获得更多功能,Electron 应用可以与一个与 exe 一起启动的不可见的 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 应用相反,打包的应用目前需要经过手动验证过程,您可以在此处申请。同时,所有用户都能够通过双击安装您的包,因此如果您正在寻找更简单的安装方法,则可能不需要提交到商店。在托管环境(通常是企业)中,Add-AppxPackage PowerShell cmdlet 可用于以自动化方式安装它

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

可选:使用 BackgroundTask 添加 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. 然后,运行桌面应用转换器的安装,传入 Windows 基本映像 (下载为 BaseImage-14316.wim) 的位置,方法是调用 .\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim
  3. 如果运行上述命令提示您重新启动,请重新启动计算机并在成功重新启动后再次运行上述命令。

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