electron-packagerでWindows用の実行ファイルを作る

タイトル通りです。

環境は下記の通りです。

OS が Windows 以外の方にはまったく役に立たない記事です!ごめんなさい。

フォルダ構成はこんなかんじ。

demo/
 ├─source/
 │  ├─package.json
 │  ├─main.js
 │  ├─icon.ico
 │  └─index.html
 └─build.js

source フォルダが Electron で実行するフォルダです。

手順

コマンドはすべて demo フォルダ上から実行しています。

electron-packager をインストール

さくっとインストール

npm install electron-packager

ソースのフォルダにインストールするとこのモジュールまで出力されてしまうので別のフォルダにした方がいいと思います。

build.js を書く

コマンドをうってもいいんだけど結構長くなるし毎回コマンドうつのは面倒くさいので js にして node で実行します。

ソースコード

build.js のソースコードです。

環境に合わせて書き換えてください。

const packager = require("electron-packager");
// 毎回オプションを書き直すのは面倒くさいのでpackage.jsonから引っ張ってくる
const package = require("./source/package.json");

packager(
    {
        name: package["name"],
        dir: "./source", // ソースフォルダのパス
        out: "./dist", // 出力先フォルダのパス
        icon: "./source/icon.ico", // アイコンのパス
        platform: "win32",
        arch: "x64",
        version: "1.0.1", // Electronのバージョン
        overwrite: true, // 上書き
        asar: false, // asarパッケージ化
        "app-version": package["version"], // アプリバージョン
        "app-copyright": "Copyright (C) 2016 " + package["author"] + ".", // コピーライト

        "version-string": {
            // Windowsのみのオプション
            CompanyName: "totoraj.net",
            FileDescription: package["name"],
            OriginalFilename: package["name"] + ".exe",
            ProductName: package["name"],
            InternalName: package["name"]
        }
    },
    function (err, appPaths) {
        // 完了時のコールバック
        if (err) console.log(err);
        console.log("Done: " + appPaths);
    }
);

API の詳細は下記の electron-packager のドキュメントをどうぞ。

https://github.com/electron-userland/electron-packager/blob/master/docs/api.md

build.js を実行

node build.js

下記のような出力が出れば成功です。

Packaging app for platform win32 x64 using electron v1.0.1
Done: dist\Test-win32-x64

出力先フォルダに exe の入ったフォルダが生成されているはずです。

その他

アイコンについて

アイコンはプラットフォームに応じて適したものにする必要があります。

Windows なら ico ファイルです。

ico ファイルに関しては調べればいくらでも情報が出てきます。

また、Windows 以外の環境で Windows 用の exe を出力してもアイコンが適用されないようです。

electron-packager のドキュメントを参考にしてください。

https://github.com/electron-userland/electron-packager#building-windows-apps-from-non-windows-platforms