Windows Store 指南¶
在 Windows 10 中,传统的 win32 可执行文件有了一个新的“兄弟”:Universal Windows Platform。新的 .appx 格式不仅启用了一系列新的强大 API,例如 Cortana 或推送通知,还通过 Windows Store 简化了安装和更新。
微软开发了一个可将 Electron 应用编译为 .appx 包的工具,使开发者能够使用新应用模型中的一些优势。本指南介绍如何使用该工具,以及 Electron AppX 包具备哪些能力和限制。
背景与要求¶
Windows 10 “Anniversary Update” 能够通过将 win32 .exe 二进制文件与虚拟化的文件系统和注册表一起启动来运行它们。这两者都会在编译期间创建:通过在 Windows 容器中运行应用和安装程序,Windows 可以准确识别安装过程中对操作系统所做的哪些修改。将可执行文件与虚拟文件系统和虚拟注册表配对,使 Windows 能够启用一键安装和卸载。
此外,该 exe 会在 appx 模型内启动——这意味着它可以使用 Universal Windows Platform 可用的许多 API。为了获得更多功能,Electron 应用可以与一个不可见的 UWP 后台任务配对,该任务与 exe 一起启动——有点像作为助手启动,用于在后台运行任务、接收推送通知,或与其他 UWP 应用通信。
要编译任何现有的 Electron 应用,请确保满足以下要求:
- 带有 Anniversary Update 的 Windows 10(发布于 2016 年 8 月 2 日)
- Windows 10 SDK,可在此处下载
- 至少 Node 4(要检查,请运行
node -v)
然后,安装 electron-windows-store CLI:
步骤 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 包¶
要运行您的包,您的用户需要带有所谓“Anniversary Update”的 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.zip 和 BaseImage-14316.wim。
- 解压
DesktopAppConverter.zip。从提升权限的 PowerShell(通过“以管理员身份运行”打开)中,调用Set-ExecutionPolicy bypass,确保系统的执行策略允许我们运行所有计划运行的内容。 - 然后,运行 Desktop App Converter 的安装程序,传入 Windows 基础映像的位置(下载为
BaseImage-14316.wim),调用.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim。 - 如果运行上述命令提示你需要重启,请重启机器,并在成功重启后再次运行上述命令。
安装成功后,你可以继续编译你的 Electron 应用。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron