打包电子应用进行分发

本指南介绍如何创建 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. 选项 1:直接使用 winapp CLI - 更易于配置,适用于任何打包程序
  2. 选项 2:使用 Electron Forge MSIX Maker - 更好地集成到 Forge 工作流中

选择最适合工作流的选项。


此方法可让你更好地控制打包过程,并适用于任何 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,以获取最广泛的分发和自动更新。 你将需要:

  1. 创建Microsoft 合作伙伴中心帐户
  2. 保留应用名称
  3. 使用应用商店标识进行更新 Package.appxmanifest 。 无需对 msix 进行签名,应用商店发布过程会自动对其进行签名。
  4. 提交以进行认证

了解详细信息:将应用发布到 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应用并准备发布! 🎉

其他资源

返回到概述

获取帮助

很高兴分发! 🚀