2

ユーザーの企業ネットワーク共有を Mac OS X の「サーバーへの接続」リストに追加するスクリプトを作成しました (Finder --> Go --> Connect to Server...)。このスクリプトは、com.apple.sidebarlists.plist のバックアップに直接書き込み、mv を使用した検証後にそれを置き換えます。この plist に変更が加えられたことを Finder に認識させるのに苦労しています。システムを再起動すると、リストに新しいサーバーが表示されます。ただし、ログアウト/ログインおよび再起動(強制終了)Finderはそうではありません。killall SystemUIServer と killall cfprefsd ( http://blog.designed79.co.uk/?p=1761 ) も試してみましたが、うまくいきませんでした。

誰かがこれに遭遇しましたか?再起動せずにリストを更新する解決策はありますか?

ありがとうございました!

これは、参照用に writes/moves/etc を実行するスクリプトの一部です。

# ...
    cp "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: The users com.apple.sidebarlists.plist could not be backed up. Aborting...."
        exitfunction
    else
        echo "$(date): com.apple.sidebarlists.plist was backed up."
    fi  

    defaults delete "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist" favoriteservers
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not remove favoriteservers from com.apple.sidebarlists.mod.plist. Aborting...."
        exitfunction
    else
        echo "$(date): Favoriteservers was removed from com.apple.sidebarlists.plist."
    fi  

    defaults write "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist" favoriteservers -dict Controller CustomListItems CustomListItems REPLACEME
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not add favoriteservers to com.apple.sidebarlists.mod.plist. Aborting...."
        exitfunction
    else
        echo "$(date): Favoriteservers was re-added to com.apple.sidebarlists.plist with placeholder."
    fi  

    plutil -convert xml1 "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not convert com.apple.sidebarlists.mod.plist to XML1 format. Aborting...."
        exitfunction
    else
        echo "$(date): com.apple.sidebarlists.mod.plist was successfully converted to XML1."
    fi  

    sed -i "" "/ *<string>REPLACEME<\/string>/r $tempfile5" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"

    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not inject new server list. Aborting...."
        exitfunction
    else
        echo "$(date): New server list was injected into com.apple.sidebarlists.mod.plist."
    fi  

    sed -i "" 's/ *<string>REPLACEME<\/string>//g' "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not remove placeholder tag in com.apple.sidebarlists.mod.plist. Aborting...."
        exitfunction
    else
        echo "$(date): Placeholder tag was removed from com.apple.sidebarlists.mod.plist."
    fi  

    plutil -convert binary1 "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not convert com.apple.sidebarlists.mod.plist into binary format. Aborting...."
        exitfunction
    else
        echo "$(date):com.apple.sidebarlists.mod.plist was successfully converted into binary1."
    fi

    plutil -lint "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR: Could not validate com.apple.sidebarlists.mod.plist. Aborting...."
        exitfunction
    else
        echo "$(date):com.apple.sidebarlists.mod.plist was successfully verified as a valid XML file."
    fi  

    mv "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist.old"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR:  com.apple.sidebarlists.plist could not be moved. Aborting...."
        exitfunction
    else
        echo "$(date):com.apple.sidebarlists.mod.plist was successfully renamed to com.apple.sidebarlists.plist.old."
    fi  

    mv "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.mod.plist" "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist"
    if [[ "$?"  != 0 ]]; then
        echo "$(date):ERROR:  apple.sidebar.mod.plist could not be moved. Aborting...."
        mv "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist.old"  "$enduserhomefolder/Library/Preferences/com.apple.sidebarlists.plist"
        echo "$(date):ERROR:  com.apple.sidebarlists.plist plist restored from backup"
        exitfunction
    else
        echo "$(date):com.apple.sidebarlists.mod.plist was successfully renamed to com.apple.sidebarlists.plist.old."
    fi  

# ....
4

2 に答える 2

0

変更が影響を受けてから Finder を再起動する前に、キャッシュを削除してみてください。

~/Library/Caches/com.apple.finder
于 2014-11-22T05:21:16.787 に答える