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