7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

electron-builderで作ったpkgをインストールする際に実行されるスクリプトを用意する

Last updated at Posted at 2017-12-06

この記事は モバイルファクトリー Advent Calendar 2017 6日目の記事です。

概要

Macでpkg拡張子を持つインストーラでは、インストール時に実行されるシェルスクリプトを配置することができ、electron-builderでもサポートされている。

Dependencies

package.json
{
  "electron-builder": "19.48.2"
}

何ができるのか

electron-builderで作るpkgでは、build/pkg-scripts以下にpostinstallまたはpreinstallというコマンドスクリプトを配置することでインストール時にhookして実行してくれる。

実行タイミングはファイル名の通り、preinstallはインストール前。postinstallはインストール後。

具体的な用法についてelectron-builder自体のドキュメントに説明が無いので分かりにくいが、electronのドキュメント中で提示されている資料とかコミットログとか、あとmacのpkgについて調べてみると出てくる。

使い方

package.jsonの設定は以下の通り

package.json
{
  "build": {
    ...
    "mac": {
      ...
      "target": {
        "target": "pkg",
        "arch": [
          "x64"
        ]
      }
    },
    "pkg": {
      "scripts": "pkg-scripts" // ここで明示的に配置場所を宣言できる
    },
    ...
  }
}
build/pkg-scripts/postinstall
#!/bin/sh

# インストール完了後、hogeが生成される

touch /Users/***/hoge

スクリプト内で使用できる変数は以下の通り

  • $1: 実行しているpkgのフルパス
    • 例: /Volumes/Users/Vikrams/Desktop/TestPkg.pkg
  • $2: インストール先のディレクトリのフルパス 例: /Applications
  • $3: ペイロードを受け取るためのボリューム(またはマウントポイント)
    • 例: /Volumes/Tools
  • $4: システムのルートディレクトリ
    • /
  • $SCRIPT_NAME: 実行するファイル名
    • 例: preflight
  • $PACKAGE_PATH: $1と同じ
  • $INSTALLER_TEMP: インストール実行時に置かれるテンポラリファイル。 この領域を一時的な作業に使用することもできるが、インストーラファイルを上書きしてはいけない。 このファイルはインストール完了時に削除される。
    • 例: /private/tmp/.vikrams.pkg.234.install

利用例

  • アプリケーションインストール後に自身を起動する
  • アプリケーションと一緒にcliもインストールする。
    • 例えばAtomだとメニュー -> Atom -> Install Shell Commandsからatomコマンドがインストールできるが、postinstallコマンドを配置しておけばインストールと同時にcliコマンドを作ってしまえる。
    • Atomは/Applications/Atom.app/Contents/Resources/app/atom.shにリンクを張っている

あまりインストール後にゴミが残ることは推奨できませんが、単純にappを生成するよりもアプリケーションの幅が広がるので、Mac向けビルドならば検討して良いと思います。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?