包裝你的 Electron 應用程式以供分銷

本指南將教你如何建立一個 MSIX 套件,用來分發 Windows API 的 Electron 應用程式。

先決條件

在包裝前,請確保你已經:

準備包裝

設定 Electron Forge 排除最終版本中的臨時檔案。 在你的 ignorepackagerConfig加入一個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 工作流程

選擇最適合你工作流程的選項。


這種方法讓你對包裝流程有更多掌控,適用於任何 Electron 包裝機。

打造你的 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"
  }
}

只要確保更新路徑,讓它和你實際的輸出資料夾名稱相符就好。


選項二:使用 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 製作工具採用與 winapp CLI 不同的資料夾配置。 它會把你的應用程式放在 app\ MSIX 的資料夾裡。 這個資料夾在包裝過程中會自動建立——你不需要自己建立。 將 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 。 這是根據你productName中的name欄位(或package.json)來決定的。

Note

Forge MSIX 製造商會根據你 MinVersion 中的 Package.appxmanifest 尋找Windows SDK 工具。 如果遇到找不到 WindowsKit 的錯誤,請確保你電腦上安裝了指定的 MinVersion SDK 版本,或更新 MinVersion 到與已安裝的 SDK 版本相符。

建立 MSIX 套件

現在你可以建立 MSIX 套件了。 使用 --targets 標誌來只運行 MSIX 製作程式(如果沒有,Forge 將會運行所有已配置的製作程式):

npx electron-forge make --targets @electron-forge/maker-msix

MSIX 套件會在資料夾 ./out/make/msix/<arch>/ 中建立(例如, ./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 Partner Center 帳號
  2. 保留您的應用程式名稱
  3. 更新 Package.appxmanifest 為你的商店識別。 不需要簽名,商店發佈流程會自動簽署。
  4. 提交認證申請

了解更多: 將您的應用程式發佈至 Microsoft Store

企業發行

直接透過以下方式分發給企業客戶:

  • 公司入口網站 - 適用於使用 Intune 的組織
  • 直接下載 - 在你的網站上架設 MSIX
  • 側載 - 透過 PowerShell 或 App 安裝程式安裝

了解更多: 在商店外發佈應用程式

應用程式安裝程式

建立 .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 應用程式並進行分發! 🎉

其他資源

返回概覽

取得說明

祝你分發愉快! 🚀