2016-10-07 4 views
0

新しいSierraアップデートでいくつかのインストール問題が発生しました。
多くの問題を引き起こしている間違ったインストールを実行している顧客が多いため、バージョン番号を確認し、バージョン番号に基づいて特定の.mpkgファイルを削除するスクリプトを実行します。私はこのコードの複数のバージョンを試したが、何も動作していないようだ。 Applescriptのコンソールの私の結果は ""です。
ご協力いただければ幸いです。Applescriptは、特殊文字とスペースでディレクトリからフォルダを削除します。

tell application "Finder" 

    set os_version to do shell script "sw_vers -productVersion" 

    if ((os_version as string) is equal to "10.12") then 

    do shell script (" rm -rf \"Step 1 Installer.mpkg\" ") 

else 

    do shell script (" rm -rf \"Step 1 Installer (SIERRA ONLY).mpkg\" ") 

end if 
end tell 
+1

バージョンが決して "10.12"でないため、最初のテストはおそらく真実ではありません。私はバージョンが "10.12.xx"だと思う。 'is equal'の代わりに 'contains'を使うべきです。スクリプトは「xx」の任意の値に対してバージョン10.12を検出します。 – pbell

+0

この度はありがとうございます。私はあなたのアドバイスを受けて、同じ結果を得ました。 'rm'命令の –

+1

の場合、削除するファイルが存在しない場合でも、-fオプションはメッセージを表示しないように設定されています。ファイルが存在しない場合、エラーは発生しません。私はあなたのハードドライブのルートにファイル "ステップ1 Installer.mpkg"が存在することに驚かれるでしょう。これはおそらく理由です。 – pbell

答えて

1

問題は、あなたがrmコマンドを実行したとき、あなたは.mpkgですファイルが入っているディレクトリを指定していないということである。それはは自動的にスクリプトがである同じディレクトリには見えません。その代わり、スクリプトの作業ディレクトリが何であっても、それは/(システムボリュームの最上位レベル)と思われます。 path to meを使用してスクリプトのパスを取得し、それをシェルで使用するために引用した形式のPOSIXパスに変換してから、親ディレクトリ名を取得する必要があります...

set scriptPath to POSIX path of ((path to me) as string) 
do shell script "rm -Rf \"$(dirname " & (quoted form of POSIX path of (scriptFile)) & ")/Step 1 Installer.mpkg\"" 

(および他のインストーラについても同様バリアント)

警告:*私は完全にこのをテストしていませんが、それはrm -Rfコマンドが含まれています。したがって、何かがうまくいかない場合、それは非常に間違っている可能性があります。気にしないシステムでうまくテストしてください。

+0

助けてくれてありがとう! –

関連する問題