ElectronでGUIアプリを開発したら、コマンドを打たなくても、アイコンをクリックするだけでアプリを実行できるようにパッケージ化して配布できるようにします。
Electronアプリのパッケージ化は公式ではElectron Forgeを推奨していますが、挙動を細かく見ることができるelectron-builderを利用することにします。
Getting Started | Electron Forge
electron-builderの挙動を見るために、Electronを試してみようで作成したウィンドウに文字列を表示するだけのアプリをパッケージ化します。
今回の話はプロジェクト名をmy-electron-appにして話を進めます。
はじめにElectronアプリのディレクトリ構造を確認しておきます。
/home/******(ユーザ名が入る)/workspace/my-electron-app/
. ├── index.html ├── main.js ├── node_modules ├── package.json └── package-lock.json
端末を開き、下記のコマンドを実行して、electron-builderをインストールします。
$ npm install -D electron-builder
インストールが終わりましたら、標準設定でElectronアプリをパッケージ化してみます。
$ cd ~/workspace/my-electron-app $ npx electron-builder build --linux
※Windows用の場合はオプションを--windowsにし、Macの場合は--macを付与します
数分待つと、
. ├── dist │ ├── builder-debug.yml │ ├── builder-effective-config.yaml │ ├── electron_1.0.0_amd64.snap │ ├── electron-1.0.0.AppImage │ └── linux-unpacked ├── index.html ├── main.js ├── node_modules ├── package.json └── package-lock.json
distディレクトリが生成され、その中にAppImage形式のファイルが生成されています。
AppImage形式のファイルを起動してみます。
下記のコマンドを実行してみます。
$ sudo apt install fuse
$ cd ~/workspace/my-electron-app/dist $ sudo chmod a+x electron-1.0.0.AppImage $ ./electron-1.0.0.AppImage
開発中にコマンドから実行していたウィンドウと同様のウィンドウが起動しました。
ビルドする際にAppImage形式のファイルのみ生成にしたい場合は、package.jsonを書き換えます。
/home/******(ユーザ名が入る)/workspace/my-electron-app/package.json
{ "name": "electron", "version": "1.0.0", "main": "main.js", "scripts": { "start": "electron .", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "build": { "linux": { "target":[ { "target": "AppImage" } ] } }, "license": "ISC", "description": "", "devDependencies": { "electron": "^29.3.0", "electron-builder": "^24.13.3" } }
※今回はLinuxの時のみですが、WindowsやMac用の記述も可能です。
Command Line Interface (CLI) - electron-builder#Target
誰でもアプリを使用できるようにするためにはSnapに登録する必要がありますが、今回はまだ触れないことにします。
追記
クロームブックにマインクラフトパイエディションを入れて遊ぶにAppImage形式のファイルをランチャーにアイコンを設置して、アイコンをクリックすることでアプリを起動する方法が記載されています。