本指南介绍如何创建 MSIX 包,以便使用 Windows API 分发 Electron 应用。
先决条件
在打包之前,请确保已:
准备打包
将 Electron Forge 配置为从最终生成中排除临时文件。 将 ignore 数组添加到你的 packagerConfig 中的 forge.config.js:
module.exports = {
packagerConfig: {
asar: true,
ignore: [
/^\/\.winapp($|\/)/, // SDK packages and headers
/^\/winapp\.yaml$/, // SDK config
/\.pfx$/, // Certificate files
/\.pdb$/, // Debug symbols
/\/obj($|\/)/, // C# build artifacts
/\/bin($|\/)/, // C# build artifacts
/\.msix$/ // MSIX packages
]
},
// ... rest of your config
};
Important
验证你的 Package.appxmanifest 是否与打包应用的结构匹配:
- 该
Executable属性应指向打包输出中正确的 .exe 文件
生成开发证书
在创建签名的 MSIX 包之前,请生成开发证书:
npx winapp cert generate
这会在项目根目录中创建一个 devcert.pfx 用于对 MSIX 包进行签名的文件。
打包选项
有两个选项可用于为 Electron 应用创建 MSIX 包:
- 选项 1:直接使用 winapp CLI - 更易于配置,适用于任何打包程序
- 选项 2:使用 Electron Forge MSIX Maker - 更好地集成到 Forge 工作流中
选择最适合工作流的选项。
选项 1:直接使用 winapp CLI(建议灵活使用)
此方法可让你更好地控制打包过程,并适用于任何 Electron 包装器。
生成电子应用
若要将 Electron 应用与 MSIX 打包,首先需要创建生产布局。 使用 Electron Forge,可以使用包命令:
# Package with Electron Forge (or your preferred packager)
npx electron-forge package
这将在 ./out/ 文件夹中创建应用的生产版本。 确切的文件夹名称将取决于应用名称和体系结构(例如 my-windows-app-win32-x64)。
创建 MSIX 包
现在,使用 winapp CLI 从打包的应用创建和签名 MSIX 包:
npx winapp pack .\out\<your-app-folder> --output .\out --cert .\devcert.pfx --manifest .\Package.appxmanifest
将 <your-app-folder> 替换为 Electron Forge 创建的实际文件夹名称(例如,my-windows-app-win32-x64 用于 x64 或 my-windows-app-win32-arm64 用于 ARM64)。
该 --manifest 选项是可选的。 如果未提供,它将在正在打包的文件夹或当前目录中查找 Package.appxmanifest。
此选项 --cert 也是可选的。 如果未提供该 msix 安装包,该软件包将不会被签名。
此选项 --output 也是可选的。 如果未提供,将使用当前目录。
MSIX 包将创建为 ./out/<your-app-name>.msix。
小窍门
为方便起见, package.json 可以向脚本添加以下命令:
{
"scripts": {
"package-msix": "npm run build-csAddon && npx electron-forge package && npx winapp pack ./out/my-windows-app-win32-x64 --output ./out --cert ./devcert.pfx --manifest Package.appxmanifest"
}
}
只需确保更新路径以匹配实际输出文件夹名称。
选项 2:使用 Electron Forge MSIX Maker (适用于 Forge 用户)
如果已在使用 Electron Forge,则可以使用 @electron-forge/maker-msix Maker 将 MSIX 打包直接集成到 Forge 工作流中。
安装 MSIX Maker
npm install --save-dev @electron-forge/maker-msix
配置 forge.config.js
将 MSIX 制作工具添加到forge.config.js
module.exports = {
// ... other config
makers: [
{
name: '@electron-forge/maker-msix',
config: {
appManifest: '.\\Package.appxmanifest',
windowsSignOptions: {
certificateFile: '.\\devcert.pfx',
certificatePassword: 'password'
}
}
}
],
// ... rest of your config
};
请更新 Package.appxmanifest
Electron Forge MSIX maker 使用与 winapp CLI 方法不同的文件夹布局。 它将你的应用置于 MSIX 中的文件夹中 app\ 。 此文件夹在打包过程中自动创建 , 无需自行创建。 在Package.appxmanifest中更新Executable路径以指向app文件夹:
<Applications>
<Application Id="myApp"
Executable="app\my-app.exe"
EntryPoint="Windows.FullTrustApplication">
<!-- ... rest of your application config -->
</Application>
</Applications>
将my-app.exe替换为您实际可执行的名称。 这基于您的package.json中的productName(或name)字段。
注释
Forge MSIX maker 根据 MinVersion 中的 Package.appxmanifest 查找Windows SDK 工具。 如果出现有关 WindowsKit 的错误,请检查计算机上是否安装了指定的 MinVersion SDK 版本,或更新 MinVersion 以符合已安装的 SDK 版本。
创建 MSIX 包
现在,可以创建 MSIX 包。 使用 --targets 标志仅运行 MSIX Maker(否则,Forge 将运行所有已配置的制造商):
npx electron-forge make --targets @electron-forge/maker-msix
将在文件夹中创建 ./out/make/msix/<arch>/ MSIX 包(例如, ./out/make/msix/arm64/ 或 ./out/make/msix/x64/)。
小窍门
此方法与 Electron Forge 工作流更集成,并在一个步骤中自动处理打包和 MSIX 创建。
安装和测试 MSIX
首先,安装开发证书(一次性安装):
# Run as Administrator:
npx winapp cert install .\devcert.pfx
现在安装 MSIX 包。 双击 msix 文件或运行以下命令:
# Option 1 output:
Add-AppxPackage .\out\<your-app-name>.msix
# Option 2 output:
Add-AppxPackage .\out\make\msix\<arch>\<your-app-name>.msix
将 <your-app-name> 和 <arch> 替换为生成输出中的实际值。
你的应用将显示在“开始”菜单中! 启动它并测试Windows API 功能。
分发选项
有了一个正常工作的 MSIX 包后,可以使用多个选项来分发应用:
直接下载
在网站上托管 MSIX 包以供直接下载。 确保使用受信任的证书颁发机构 (CA) 中的代码签名证书对其进行签名,以便用户可以在没有安全警告的情况下安装它。
Microsoft Store
将应用提交到Microsoft Store,以获取最广泛的分发和自动更新。 你将需要:
- 创建Microsoft 合作伙伴中心帐户
- 保留应用名称
- 使用应用商店标识进行更新
Package.appxmanifest。 无需对 msix 进行签名,应用商店发布过程会自动对其进行签名。 - 提交以进行认证
了解详细信息:将应用发布到 Microsoft Store
企业分发
直接通过以下方式分发给企业客户:
- 公司门户 - 对于使用 Intune 的组织
- 直接下载 - 在网站上托管 MSIX
- 旁加载 - 通过 PowerShell 或应用安装程序进行安装
了解详细信息: 在应用商店外分发应用
应用安装程序
为 .appinstaller 自动更新创建文件:
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
Uri="https://your-domain.com/packages/myapp.appinstaller"
Version="1.0.0.0"
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2">
<MainPackage
Name="YourAppName"
Version="1.0.0.0"
Publisher="CN=YourPublisher"
Uri="https://your-domain.com/packages/myapp.msix"
ProcessorArchitecture="x64" />
<UpdateSettings>
<OnLaunch HoursBetweenUpdateChecks="24" />
</UpdateSettings>
</AppInstaller>
了解详细信息: 应用安装程序文件概述
后续步骤
祝贺! 您已成功打包支持Windows的Electron应用并准备发布! 🎉
其他资源
- winapp CLI 文档 - 完整 CLI 参考
- 示例 Electron 应用 - 完整运行示例
- MSIX 打包文档 - 了解有关 MSIX 的详细信息
- Windows 应用认证工具包 - 在应用商店提交之前测试应用
返回到概述
- 入门概述 - 返回到主指南
- 设置开发环境 - 查看设置步骤
- 创建 Phi Silica 加载项 - 评估加载项创建
- 创建 WinML 扩展 - 了解 WinML 集成
获取帮助
- 发现了一个 bug?提出问题
很高兴分发! 🚀