跳转到主要内容

Windows Store 指南

使用 Windows 10,古老的 win32 可执行文件有了一个新伙伴:通用 Windows 平台。新的 .appx 格式不仅支持 Cortana 或推送通知等一系列强大的新 API,而且通过 Windows 应用商店,还可以简化安装和更新过程。

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

背景和要求

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

此外,exe 在 appx 模型中启动,这意味着它可以利用通用 Windows 平台的大多数可用 API。为了获得更多功能,Electron 应用可以与一个与 exe 一起启动的隐形 UWP 后台任务配对,该任务作为辅助运行,用于在后台执行任务、接收推送通知或与其他 UWP 应用程序通信。

要编译任何现有的 Electron 应用,请确保您满足以下要求:

  • Windows 10 Anniversary Update(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 桌面应用转换器”。这需要几分钟时间,但不用担心,您只需要执行一次。从此处下载并安装桌面应用转换器。您将收到两个文件: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 应用。