Electron

Electron アプリを安全にWindows配布する手順と自動署名・CI/CDガイド

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

開発環境の準備

このセクションでは、Windows で Electron アプリをビルドするために最低限必要なソフトウェアと設定項目を整理します。正しいバージョンを導入すれば、electron-builder が要求するツールチェーンが自動的に利用できるようになります。

Node.js とパッケージマネージャーのインストール

Node.js は LTS 系列を選択し、npm もしくは Yarn を併用します。以下の手順で環境変数 PATH に自動登録されますので、コマンドプロンプトからすぐに利用可能です。

ポイント
* LTS バージョンは長期サポートが保証され、electron-builder の依存関係と互換性が高くなります。

Windows SDK とビルドツールのセットアップ

コンポーネント 推奨取得方法 主な設定ポイント
Windows 10/11 SDK (例: 10.0.22621) Visual Studio Installer → 「個別コンポーネント」→「Windows 10 SDK」 インストール後、%ProgramFiles(x86)%\Windows Kits\10\bin\<version>\signtool.exePATH に含まれることを確認
C++ デスクトップ開発ワークロード 同上の「ワークロード」タブで選択 windows-build-tools の npm パッケージは不要です
PowerShell 7.x https://github.com/PowerShell/PowerShell/releases スクリプト実行ポリシーは Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 推奨

これらをインストールした状態で、コマンドラインから次のコマンドが正常に動作すれば完了です。


本番ビルド ― electron‑builder の活用

Windows 配布ではインストーラ形式とコード署名の自動化が重要です。electron-builder はこれらをシームレスに統合できる唯一のツールとして広く採用されています。

electron‑builder と electron‑packager の比較

項目 electron‑packager electron‑builder
ビルド対象 フォルダ構造の作成のみ NSIS、MSIX など多様なインストーラを自動生成
設定方式 コマンドライン中心 package.jsonbuild フィールドで一元管理
署名統合 手作業で signtool.exe 呼び出しが必要 環境変数だけで自動署名、Azure Key Vault 連携も可能
CI/CD 対応 スクリプト追加が必須 デフォルトで Windows/macOS/Linux のパイプライン例を提供

結論:Windows 向けにインストーラと署名の自動化が求められる場合、electron-builder が最適です。

ビルド設定ファイルの基本構成

以下は {{CompanyName}} の製品情報を埋め込んだサンプルです。ロゴやアイコンのパスは自社リポジトリに合わせて変更してください

ビルドの実行

上記コマンドだけで release/ に NSIS インストーラと MSIX パッケージが生成されます。次節でコード署名の設定方法を詳しく説明します。


インストーラ作成とコード署名

未署名の実行ファイルは SmartScreen や UAC の警告対象になるため、デジタル署名は必須です。本章では EV 証明書の取得から Azure Key Vault への安全な格納、electron-builder での自動適用手順を解説します。

NSIS インストーラのカスタマイズ

build/installer.nsh に独自ロジックを書き込むことで UI を自由に拡張できます。以下は基本的な設定例です。

ヒント:公式サンプル (node_modules/electron-builder/templates/nsis) をベースにすると、将来のアップデートにも安全です。

EV 証明書の取得と Azure Key Vault へのインポート

  1. 証明書購入
    DigiCert、GlobalSign 等の認定 CA から「Extended Validation (EV)」証明書(PFX 形式)を取得します。EV 証明書は一般的なコード署名証明書に比べて信頼性スコアが高く、SmartScreen の警告回避率が向上することが実績として報告されています。

  2. Key Vault にインポート

重要CERT_PFX_PASSWORD は GitHub Secrets や Azure Pipelines の変数として安全に管理してください。

ビルド時の自動署名フロー

electron-builder が認識する環境変数は次の 2 つです。CI 環境では必ず シークレット として設定し、平文で保存しないよう注意します。

環境変数 内容
CSC_LINK PFX ファイルへのパス(例: ${{ runner.temp }}/cert.pfx
CSC_KEY_PASSWORD 上記 PFX のパスワード

GitHub Actions の実装例

Azure DevOps Pipelines の実装例

SmartScreen と UAC に対する署名の効果

  • SmartScreen はデジタル署名と過去の評価スコアを組み合わせて信頼性を判定します。EV 署名は評価スコア向上に寄与し、警告が表示される確率を低減させます(※保証ではなく「可能性が高まる」ことを示す)。
  • UAC のダイアログには「発行元が信頼できる」と表示されるため、ユーザーのインストール意思決定がスムーズになります。

自動更新と CI/CD パイプライン

配布後も安全に最新版を提供するために、electron-updater とクラウドリポジトリ(GitHub Releases)を組み合わせた自動更新フローを構築します。CI/CD に組み込むことで、ビルド・署名・リリースまでの一連作業が完全自動化されます。

electron‑updater の基本設定

package.jsonpublish セクションに GitHub リポジトリ情報を記述します。{{CompanyName}} のリポジトリ名は適宜置き換えてください。

メインプロセスに組み込む更新ロジック

ポイント:開発環境 (electron-is-dev) では自動更新を無効化し、テスト時の誤動作を防ぎます。

CI/CD パイプラインでのリリース自動化

GitHub Actions(完全自動リリース)

Azure DevOps Pipelines(マルチプラットフォーム例)

これらのパイプラインは タグプッシュ(バージョン管理)をトリガーに、署名済みインストーラを自動生成し、GitHub Releases または Azure Artifacts に公開します。electron-updater がリポジトリから最新アセットを取得するため、エンドユーザーはワンクリックでアップデートできます。


MSIX パッケージと配布後のトラブルシューティング

企業内配布や Microsoft Store への掲載が必要な場合、MSIX が推奨フォーマットです。ここでは MSIX のビルド手順と、実運用で遭遇しやすいエラーへの対処法をまとめます。

MSIX ビルド設定({{CompanyName}} 用サンプル)

MSIX のみ生成するコマンド

配布後に起きやすいエラーと解決策

現象 主な原因 推奨対処
SmartScreen が「未知の発行元」と表示 証明書が EV でない、または署名期限切れ EV 証明書に更新し、signtool verify /pa <exe> で有効性を確認
UAC に「このアプリの発行元は不明です」 publisherId が Windows Store の証明書と不一致 MSIX の publisher フィールドを Azure AD 証明書と完全一致させる
自動更新が検出されない GitHub Releases に latest.yml が欠如 ビルド時に electron-builder --publish=always を付与し、メタ情報を自動生成
MSIX インストールで「署名が無効」エラー PFX のパスワードが間違っている、または環境変数未設定 環境変数 CSC_KEY_PASSWORD が正しいか再確認し、signtool verify /pa <msix> で検証
アプリ起動時に依存ランタイムエラー 必要な Visual C++ 再頒布パッケージが未インストール インストーラの dependenciesMicrosoft.VCRedist.2015+ を追加

ベストプラクティス:CI パイプラインに「署名検証ステップ」を組み込み、ビルド完了後に自動で signtool verify を実行してエラーを早期に捕捉します。


まとめ

  • 環境構築:Node.js LTS + Windows SDK → 必要ツールは PATH に追加。
  • ビルド選択:インストーラ自動生成とコード署名の容易さから electron-builder が最適。
  • 署名:EV 証明書を Azure Key Vault で安全管理し、CSC_LINK/CSC_KEY_PASSWORD により CI/CD へ自動供給。
  • 更新electron-updater と GitHub Releases の組み合わせでシームレスな自動アップデートを実現。
  • MSIX:企業・Store 向けは MSIX を生成し、署名とメタ情報の整合性を CI で検証。

上記手順に沿って構築すれば、{{CompanyName}} の Windows デスクトップアプリは 安全・信頼性・継続的配布 が実現でき、ユーザー体験の向上と運用コスト削減が期待できます。


スポンサードリンク

-Electron