2

アプリケーション用のコマンド ライン ツールを作成しています。と を使用pkgbuildproductbuildてパッケージを作成します。そのlaunchdaemonバイナリ。私はスクリプトを持っpreinstallています。postinstall

インストール後、postinstallスクリプトに含まれている可能性があります。Firefox が実行されているかどうかを検出する必要があり、Firefox を再起動する必要があることをユーザーに通知します。それは可能ですか?どのように?

postinstall スクリプトの一部である、スクリプトからの抜粋。

.........

## Check if Firefox is running in the background with no tab/window open.


function restart_empty_firefox (){
    echo "Restarting firefox if no tab is opened. "

    firefoxRunning=$(osascript \
        -e 'tell application "System Events" to set fireFoxIsRunning to ((count of (name of every process where name is "Firefox")) > 0)' \
        -e 'if fireFoxIsRunning then' \
        -e 'set targetApp to "Firefox"' \
        -e 'tell application targetApp to count (every window whose (closeable is true))' \
        -e 'else' \
        -e 'return 0' \
        -e 'end if')

    if [ $firefoxRunning -eq 0 ]; then
        echo 'Firefox is in the background with no window and so quitting ...'
        osascript -e 'quit app "Firefox"'
    else 
        ##### show a dialog to the user to restart Firefox
    fi

}

firefox_update # not shown here
restart_empty_firefox

.............
4

1 に答える 1

2

プロセス ステータス ( ps) ツールを使用できます。

ps aux | grep '[F]irefox.app' | awk '/firefox$/ {print $2}'

結果:

82480

これは、それFirefox.appが実際に実行中であることを示しています (プロセス 82480)。

編集:あなたは使用する方向に傾いているように見えるのでosascript、ユーザーにFirefoxを再起動するように求める例を次に示します(フルコントロールを手に入れます):

#!/bin/bash

osascript <<'END'
set theApp to "Firefox"
set theIcon to "Applications:Firefox.app:Contents:Resources:firefox.icns"

tell application "System Events"
    if exists process theApp then
        display dialog "Warning: Mozilla " & theApp & " should be closed." buttons {"Continue"} with icon file theIcon default button 1
        if the button returned of the result is "Continue" then
        end if
    end if
    display notification "Installation complete" with title "Application Package" subtitle "Please relaunch " & theApp
    delay 3
end tell
END

スクリプトに十分な権限がある場合quitは、あからさまにプロセスを強制終了するよりも使用することをお勧めします。それ以外の場合は、ユーザーに Firefox を終了して再起動するように依頼してください — 問題は解決しました。

于 2015-09-08T19:46:37.453 に答える