2016-12-05 3 views
0

これは新しくなりました。私はポストインストールスクリプトを使用して、ファイルとフォルダをMac上のユーザーのApplication Supportフォルダに移動する必要があります。ファイルについては、ファイルが存在しない場合にのみ移動します。もし存在すれば私はそれを上書きしたくない。ここに私のスクリプトです。実行されますが、何もコピーされません。私は、パッケージのアプリ、btwを使用しています、このスクリプトはpostinstallスクリプトのタブに読み込まれます。Macでのポストインストールスクリプトのサポート

#!/bin/sh 
if ! "/Library/Application Support/MyApp/MyApp user dict"; then 
mv "$1/Contents/Resources/MyApp user dict" "/Library/Application Support/MyApp/."; 
fi 

mv "$1/Contents/Resources/Spellcheck Dictionary" "/Library/Application Support/MyApp/."; 
exit 0 

答えて

0

ユーザー固有のタスクは、一般的に、インストーラスクリプトに属していない - マシン上で複数のユーザーがあるかもしれないことを覚えておいてください、そして、あなたのインストーラを実行しているときにそれらのいくつかにはアクセスできない場合があること。 (例えば、ユーザは暗号化されたホームディレクトリを持っているかもしれませんし、インストーラが実行されるまで存在しないかもしれません)。アプリケーションがユーザのホームディレクトリにファイルをコピーする必要がある場合は、

はそれにもかかわらず、私はこのスクリプトを使用していくつかの特定の問題を参照してください。

  1. あなたのスクリプトは、いくつかの場所で$1を指します。スクリプトにコマンドラインで引数が渡されていることを確認してください。ファイルが存在しないかどうかをテストする

  2. 正しい構文は次のとおりです。

    if [ ! -f "/path/to/file" ] ; then … 
    

    あなたのスクリプトは、角括弧と-f条件が欠落しています。 (詳細については、man testを参照してください。)

  3. $1は現在のユーザのホームディレクトリへのパスすることになっていると仮定すると、あなたは後方mvに引数を持っています。目的地は最初ではなく、最後に来ます。 (構文は本質的にmv from toです)

+0

よろしくお願いします。そのため、インストーラを使用する代わりに、ファイルとフォルダが存在するかどうかをs/wで確認して、開いたときにその場所に移動する必要があります。私は、インストーラスクリプトを使用してそれを回避できると思ったが、私はあなたが指定した理由のためにすべきではないと思います。構文を知っておくと便利ですが、ありがとうございます。 – user3499381

+0

ファイルを移動していない可能性があります。そうでなければ、はい。 – duskwuff

関連する問題