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 集成或动态磁贴。
要查看使用后台任务发送 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 应用了。