「スクリプトの結果」要件を使用して、特定のプロセスが実行されているかどうかを確認しようとしています。これにより、インストールが開始される前にユーザーにメッセージを送ることができます。私のスクリプトは、失敗の場合は 1、成功の場合は 0 を返すシェル スクリプトです。私が抱えている問題は、戻り値に関係なく、インストーラー フローがそれを失敗と解釈していることです。私は信じられないほど単純なスクリプトを使用していません。
#!/bin/bash
echo "script starting">> /tmp/myfile
true
(エコーは、スクリプトが実際に実行されていることを確認するためのものです)。最後の行を多くのもの (exit 0、exit 1、「true」、「TRUE」) に置き換えてみましたが、テストに合格する結果はありません。
また、この要件を有効にすると、distribution.dist に追加される次の JavaScript コードも発見しました。
<installation-check script="pm_install_check();"/>
<script>function pm_install_check() {
if(!(system.run('path/to/script/myscript.sh') == true)) {
my.result.title = 'Title';
my.result.message = 'Message';
my.result.type = 'Fatal';
return false;
}
return true;
}
</script>
私が知る限り、if ステートメントの式が true に評価されることはありません。だから、これは私の問題だと思います。ただし、このコードは PackageMaker によって生成されるため、これを回避する方法はわかりません。
アップデート
これは PackageMaker のバグであり、回避策に近いという印象の下で作業することにしました。「スクリプトの結果」要件を使用するのではなく、「Javascript の結果」要件を使用し、次のような Javascript 関数を作成しました。
function my_check() {
code = system.run('path/to/script/myscript.sh');
return code == 0;
}
私の唯一の問題は、絶対パスを介してスクリプトを指定した場合にのみ機能することです。明らかに、これはインストーラーに問題を引き起こします。