SMJobBless は、ジョブを launchd のシステムに追加します。これを行うには、SMJobBless サンプル コードを参照してください。
http://developer.apple.com/library/mac/#samplecode/SMJobBless/Introduction/Intro.html
ただし、launchd の全体的な目的は、ジョブがいつどのように起動されるかを制御することです。デフォルトでは (サンプル コードでは)、実際にいつジョブを起動するかの指定がないため、実際にはジョブが起動されることはありません。 .
Nathan de Vries は、SBJobBless を使用し、XPC を使用して特権ジョブと通信するための非常に優れた記事とサンプル コードを書きました。もちろん、インポート側の影響の 1 つは、launchd サービスと通信しようとすると、launchd が実際にサービスを開始するため、これで問題が解決することです。
http://atnan.com/blog/2012/02/29/modern-privileged-helper-tools-using-smjobbless-plus-xpc/
そして、具体的にあなたの質問に答えるために、SMJobSubmit は特権ヘルパーを実行できます。理解するのに長い時間がかかりましたが、この 2 つの違いは、SMJobSubmit では launchd を使用して特権付きで実行可能ファイルを実行できるのに対し、SMJobBless では LaunchDaemon を永続的に追加することです。SMJobBless のインストール済み実行可能ファイルは bless されたままになりますが、SMJobSubmit では毎回再認証が必要になります。
どちらの場合も、新しいバージョンが確実に使用されるように、以前のものを SMJobRemove する必要があることに注意してください。
したがって、次のいずれかが必要だと思います。
- SMJobRemove、SMJobSubmit は、アプリケーションを起動するたびにユーザーに認証を求めます。作成したディクショナリで RunAtLoad プロパティを使用して、ヘルパーをすぐに実行します。
また
- Nathan のコード、XPC 接続を使用し、バージョン番号を尋ねます。更新されていない場合は終了し、次に SMJobRemove、SMJobBless 新しいバージョンを作成し、XPC 接続して kext のインストールを依頼します。そうすれば、ユーザーは新しいバージョンを認証するだけで済みます。