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