Windows 应用商店指南
随着 Windows 10 的发布,旧的 win32 可执行文件有了一个新的同胞:通用 Windows 平台。新的 .appx
格式不仅启用了许多强大的新 API,如 Cortana 或推送通知,而且通过 Windows 应用商店,还简化了安装和更新。
微软开发了一个工具,将 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
第一步:打包你的 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
第二步:运行 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 还可以自动将包安装到您的计算机上。
第三步:使用 AppX 包
为了运行你的包,你的用户需要带有所谓的 "周年更新" 的 Windows 10 - 有关如何更新 Windows 的详细信息,请在此处查找。
与传统的 UWP 应用相反,打包的应用目前需要经过手动验证过程,您可以在此处申请。同时,所有用户都可以通过双击来安装您的包,因此,如果您正在寻找更简单的安装方法,则可能不需要提交到应用商店。在托管环境中 (通常是企业),可以使用 Add-AppxPackage
PowerShell Cmdlet 以自动化方式安装它。
另一个重要的限制是,编译后的 AppX 包仍然包含 win32 可执行文件 - 因此它无法在 Xbox、HoloLens 或手机上运行。
可选:使用后台任务添加 UWP 功能
您可以将你的 Electron 应用与一个无形的 UWP 后台任务配对,该任务可以充分利用 Windows 10 的功能 - 如推送通知、Cortana 集成或动态磁贴。
要查看如何使用后台任务发送 Toast 通知和动态磁贴的 Electron 应用,请查看微软提供的示例。
可选:使用容器虚拟化进行转换
要生成 AppX 包,electron-windows-store
CLI 使用一个模板,该模板应该适用于大多数 Electron 应用。但是,如果您使用的是自定义安装程序,或者在生成的包中遇到任何问题,您可以尝试使用 Windows 容器进行编译来创建包 - 在该模式下,CLI 将在空白的 Windows 容器中安装并运行您的应用程序,以确定您的应用程序对操作系统究竟进行了哪些修改。
在第一次运行 CLI 之前,您必须设置 "Windows 桌面应用转换器"。这将需要几分钟的时间,但请不要担心 - 您只需要执行一次。从此处下载并安装桌面应用转换器。您将收到两个文件:DesktopAppConverter.zip
和 BaseImage-14316.wim
。
- 解压缩
DesktopAppConverter.zip
。从提升的 PowerShell (使用 "以管理员身份运行" 打开) 中,确保您的系统执行策略允许我们通过调用Set-ExecutionPolicy bypass
来运行我们打算运行的所有内容。 - 然后,通过调用
.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim
来运行桌面应用转换器的安装,传入 Windows 基本镜像的位置 (下载为BaseImage-14316.wim
)。 - 如果运行上述命令提示您重新启动,请重新启动计算机,并在成功重新启动后再次运行上述命令。
安装成功后,您可以继续编译您的 Electron 应用。