本文へスキップ

Electron アプリの Windows インストーラーを作成する

Electron Packager または Forge でアプリをパッケージし、出力フォルダーをウィザード・ショートカット・アンインストーラー付きの Setup.exe に変換します。electron-builder の設定は不要です。

更新日 2026年10月31日 · 読了 6 分

Electron は、動作する Windows アプリをフォルダーとして出力します。MyApp.exe、いくつかの DLL、resources/app.asar、そして locales です。このフォルダーを Setup.exe にするのは別の工程で、よく使われるツール(electron-builder、Squirrel、electron-forge の maker)にはそれぞれ独自の設定、癖、ビルドマシンへの要件があります。ウィザード形式のインストーラーのためだけにそれらを学びたくないなら、こちらが近道です。

ステップ 1:アプリをフォルダーにパッケージする

必要なのはパッケージ済みのアプリであって、開発プロジェクトではありません。以下のどちらのツールでも、配布できるフォルダーが生成されます。

Electron Packager(コマンド 1 つ、設定ファイル不要):

npx @electron/packager . MyApp --platform=win32 --arch=x64 --icon=build/icon.ico --overwrite

これで MyApp-win32-x64/ が作成され、その中に MyApp.exe が入ります。

Electron Forge、すでにプロジェクトで使っている場合:

npm run package

フォルダーは out/ の下に生成されます。例:out/MyApp-win32-x64/。

どちらのコマンドも Windows、macOS、Linux で動作します。--icon フラグ(Forge では packagerConfig.icon)は MyApp.exe に埋め込むアイコンを指定します。この .ico ファイルはインストーラーでも使うので、手元に置いておいてください。

フォルダーを開いて MyApp.exe をダブルクリックし、パッケージ済みアプリが起動することを確認します。32 ビット版が必要な場合は、代わりに --arch=ia32 を指定します。

ステップ 2:フォルダーを zip 圧縮する

MyApp-win32-x64/ の中身(.exe、DLL、resources/、locales/)を zip にします。親のプロジェクトではありません。zip の中身はすべてそのままインストールされるので、配布すべきでないものは入れないでください。

ステップ 3:インストーラーをビルドする

  1. zip を ExeTup にアップロードします。ファイルの一覧が表示され、MyApp.exe がメインプログラムとして選ばれるので、確認します。
  2. アプリ名、バージョン(package.json と合わせます)、発行者、必要ならライセンスを入力します。
  3. インストール範囲を選びます。Electron アプリはユーザーごとにインストールするのが一般的で、管理者権限が不要なうえ、Squirrel ベースのインストーラーと同じ動作になります。マシン上の全員が使えるように Program Files に入れたい場合はすべてのユーザーを選びます。
  4. x64 パッケージなら 64 ビットのままにします。
  5. インストーラーとショートカットに同じ .ico をアップロードし、スタートメニューとデスクトップのショートカットを有効にし、必要なら「インストール後に起動」もオンにします。
  6. ビルドして Setup.exe をダウンロードし、Windows でテストします。

Electron 固有の注意点

  • サイズ。 パッケージ済みの Electron アプリは非圧縮で 150〜250 MB あります。インストーラーはソリッド LZMA 圧縮を使うため、通常は 60〜90 MB まで小さくなります。zip にする前に料金セクションでアップロード上限を確認してください。上限はサイト側で設定されています。
  • 自動更新。 このインストーラーには更新フィードは含まれません。electron-updater や Squirrel の更新機構を使っているなら、そちらを維持してください。このガイドは、新しいバージョンを新しいインストーラーとして配布するアプリ向けです。その方が簡単で、多くのアプリには十分です。
  • スタートアップ起動。 インストール時に選択させたい場合は、app.setLoginItemSettings ではなくインストーラーの「スタートアップ時に起動」オプションを使ってください。どちらも同じ種類の Run エントリを書き込みます。
  • コード署名。 パッケージ済みの MyApp.exe と Setup.exe は、自分で署名しない限り未署名です。未署名のダウンロードは SmartScreen の警告を引き起こすことがあります。SmartScreen のガイドを参照してください。

electron-builder の NSIS ターゲットとの比較

electron-builder も NSIS インストーラーを生成でき、差分更新、カスタム NSIS スクリプト、MSI 出力、署名フックといったフル機能が必要なら良いツールです。その代わり、設定とビルド環境の維持が必要になります。ExeTup はパッケージ済みフォルダーから同じ種類の NSIS インストーラーをビルドし、オプションはフォームで設定します。リリース頻度が低いチームや、Mac でビルドしていてインストーラーのためだけに Windows パイプラインを持ちたくないチームに向いています。

よくある質問

パッケージ済みアプリの代わりに Electron のプロジェクトフォルダーをアップロードできますか?

できません。インストーラーが包むのは Electron Packager または Forge の出力、つまり MyApp.exe を含むフォルダーです。ソースプロジェクト、node_modules、開発ツールはそこに含めません。

Electron アプリにはどのインストール範囲を使うべきですか?

ユーザーごとが一般的な選択です。管理者の確認なしに、ユーザー自身のフォルダーにインストールされるからです。IT 部門がマシン上のすべてのアカウントにアプリを配布する場合は、すべてのユーザーを選んでください。

アンインストール中にアプリが開いていても、インストーラーは対処できますか?

アンインストーラーは自分がインストールしたファイルを削除します。他の Windows プログラムと同様に、先にアプリを閉じるようユーザーに案内してください。実行中の .exe は終了するまで削除できません。

Tauri や NW.js で作ったアプリでも使えますか?

使えます。Windows の .exe とそのファイルを含むフォルダーなら何でも包めます。Tauri には独自のバンドラーがありますが、通常のパッケージ出力でもここでは同じように動作します。

関連ガイド