2

kext を必要とする Mac OS X アプリケーションがあります (これも私が作成しました)。ユーザーがアプリケーションを実行すると、kext が自動的に読み込まれるように、kext をアプリケーションに「バンドル」したいと思います (もちろん、管理者パスワードのプロンプトが表示される場合があります)。可能ですか、それともインストール時に kext をインストールする必要がありますか?

4

2 に答える 2

1

アプリからインストールできます。サービス管理フレームワークを使用して、昇格された特権 (C または Obj-C で記述) でタスクを実行する必要があります。これで kext をインストールできます。

ヘルパー ツールは、アプリに代わって kext をインストールするアクションを実行するために、昇格された特権で実行される実行可能ファイルである必要があります。

手順:

  1. Kext とヘルパー ツールをリソースとしてアプリ バンドルに含めます。
  2. 作業を行うためのヘルパー ツールを作成します。ヘルパー ツールは、kext を /System/Extensions ディレクトリにコピーする必要があります。昇格された権限でコピーする必要があります。ヘルパー ツールで kextload を呼び出してインストールします。
  3. ヘルパー ツールとアプリにコード署名し、サービス管理フレームワークに関連するエントリをヘルパーとメイン アプリの両方の info.plist に配置する必要があります。

これに関する Apple の開発者向けドキュメントはまったくひどいものです。幸運を。Security Framework や Service Manager などの C ライブラリとコード署名を使用する必要があるため、Java ではなく、Objective-C または C でこれをすべて行う必要があります。

于 2012-10-16T14:34:43.533 に答える
0

なんとか同梱できました!root パスワードを要求するスクリプトを実行してから、kext のインストールに進みます。唯一の問題は、バンドルされている kext の場所を事前に知っておく必要があることです (それらに 'cd' する必要があります)。そのため、アプリケーションは事前定義された場所に配置する必要があります。そうしないと機能しません。

于 2012-10-17T11:56:11.390 に答える