跳转至主要内容

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 应用可以与一个不可见的 UWP 后台任务配对,该任务与 exe 一起启动 - 有点像作为辅助工具启动,以在后台运行任务、接收推送通知或与其他 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 App Packager (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 集成或动态磁贴。

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

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

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

在首次运行 CLI 之前,你必须设置“Windows Desktop App Converter”。 这将需要几分钟时间,但请不要担心 - 你只需要执行一次。 从 此处 下载并 Desktop App Converter。 你将收到两个文件:DesktopAppConverter.zipBaseImage-14316.wim

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

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