インストーラーを作成する必要のあるアプリがあり、(アプリのコピー以外に)インストーラーが実行する必要があるのは、アプリ自体の一部ではないスクリプト(または実行可能ファイル)を実行することだけです。私がこれを行う方法について何か助けはありますか?[要件]タブに[スクリプトの結果]アクションがあり、 [ファイルを開く]アクションがある[アクション]タブにプレインストールアクションもあります。これらのどちらかが仕事をしますか、それとも私は他の場所を探すべきですか?
3 に答える
ここに良いハウツーがあります
インストール プロセス中に起動できるスクリプトには、次の 7 種類があります。
InstallationCheck: このスクリプトは、インストール プロセスの開始時に (認証ステップの前であっても) 起動されます。パッケージをこのコンピュータにインストールできることを確認するために使用できます。
VolumeCheck: このスクリプトは、「宛先の選択」ステップで起動されます。パッケージをインストールできるボリュームを決定するために使用されます。
preflight: このスクリプトは、ユーザーが [インストール] ボタンをクリックした直後に起動されます。
preinstall / preupgrade: このスクリプトは、プリフライト スクリプトが存在する場合 (単一パッケージ インストールの場合) の後に起動されます。それ以外の場合は、ユーザーが [インストール] ボタンをクリックした直後です。
ご覧のとおり、ここには 2 種類のスクリプトがあります。preinstall はパッケージがインストールされていない場合に起動され (Installer.app の観点から)、preupgrade はパッケージが既にインストールされている場合に起動されます。パッケージが既にインストールされているかどうかを判断するために、Installer.app はディレクトリ /Library/Receipts の内容を調べています。その中に PackageName.pkg という名前のファイルがある場合、パッケージは既にインストールされています。それ以外の場合は、最初のインストールです。
postinstall / postupgrade: このスクリプトは、パッケージ内のファイルがインストールされた後に起動されます。どちらが起動されるかを確認するには、(プレインストール / プレアップグレード) を参照してください。
postflight: このスクリプトは、postinstall / postupgrade スクリプトの後、またはパッケージがインストールされたときに起動されます。
PackageMaker で作成したパッケージにシェル スクリプトを含めることができました。インストール後にアプリをログイン項目に追加する必要があったので、というスクリプトを作成postflight.sh
してフォルダーに入れました。(どの場所でも動作するようです)
そして、私のパッケージにはアプリケーションがあります。Contents、Package:Applications の Scripts タブで、postflight.sh
in Postflight セクションを選択します。それでおしまい。
私のpostflight.sh
始まり
#!/bin/bash
そして、アプリをログイン項目に入れるためのスクリプトがあります。それが無かったらパッケージは作れましたが、インストールに失敗しました。これが役に立てば幸いです。
このPackageMaker のハウツー記事は古くなっていますが、スクリプトに関する非常に役立つ情報が中途半端に掲載されています。シェルと perl から見たコマンド ライン変数と、いくつかの有用な終了ステータス値を示す表を探してください。