8

/Library のフォルダーに定期的にファイルをインストールする必要がある作業を行っています。

以前は認証方法の 1 つを使用できましたが、それらは 10.7 で非推奨になったことを理解しています。

これまでの読書から私が理解したこと:

何らかの方法で認証されるヘルパーを作成し、そのヘルパーにすべての移動タスクを実行させる必要があります。XPC に関係するものや Elevator と呼ばれるものなど、いくつかのサンプル コードを調べましたが、少し混乱しています。

その多くは、ある種のクライアント/サーバー モデルのセットアップを扱っているようですが、これが実際にファイルを正しいディレクトリにインストールすることにどのように変換されるかはわかりません。ほとんどの例は文字列を渡すだけです。

私の質問は簡単です: プログラムで /Library にフォルダーを作成し、定期的にファイルを書き込むにはどうすればよいですか? これにアプローチする方法がよくわかりませんし、ドキュメントもあまりないようです。

4

1 に答える 1

5

これに関するドキュメントがあまりないことは間違いありません。基本的に、SMJobBless() でインストールされるヘルパー アプリという別のアプリを作成します。当然のことながら、ここで注意が必要なのはコード署名です。私にとって最も明白でない部分は、各アプリの情報 plist ファイルのSMAuthorizedClientsおよびSMPrivilegedExecutablesエントリが、アプリの署名に使用した ID/証明書に依存していることです。コンパイラ/リンカーには、バンドルではなく単一の実行可能ファイルになる、ヘルパー ツールにコンパイルされた情報 plist ファイルを取得するためのトリックもあります。

ヘルパー アプリを起動して実行したら、2 つの異なるプロセスであるため、ヘルパー アプリと通信する方法を考案する必要があります。XPC は 1 つのオプションであり、おそらく最も簡単です。XPC は通常、サーバー プロセスで使用されますが、ここで使用しているのは XPC の通信側のみです。基本的に、2 つのアプリ間で辞書をやり取りします。ディクショナリの標準フォーマットを作成します。@"action"、@"source"、@"destination" を 3 つの異なるアクション値 @"filemove"、@"filecopy"、@"makedirectory" と共に使用しました。これらは、ヘルパー アプリで実行できる 3 つのことであり、必要に応じて簡単に追加できます。

ヘルパー アプリは、基本的に XPC 接続とイベント ハンドラーをセットアップし、接続とコマンドを待ちます。コマンドは単なる辞書になるため、適切なキー/値をチェックして、何でもします。

さらにサポートが必要な場合は、詳細とコードを提供できますが、この質問は 9 か月前のものであるため、既に把握している詳細を提供するために時間を無駄にしたくありません。

于 2013-02-25T18:41:13.197 に答える