2

システム ディレクトリにインストールする必要がある .kext および .plugin ファイルを含むインストール パッケージを作成するために PackageMaker 3.0.4 を使用しています。私の目標は、.pmdoc を作成することです。

私は非常に多くのバグに遭遇したので、誰かがどうやってそれを機能させたのかわからないので、誰かが実際にそれを使用しているとは信じられません. 特に異常なことをしているとは思いません、編集のために .pmdoc を開くたびに (またはコマンドラインからビルドするときでさえ)、PackageMaker は私の設定を任意に変更します。特に権限だけでなく、パスも。

インストーラーをビルドするときに .pmdoc を使用しているため、コマンドラインから特に腹立たしいです...そのため、PackageMaker がさまざまな (重要な!) パーミッションを台無しにしてしまったため、インストーラーが壊れてしまいます。ロードなど。

この段階での最善の回避策は、コマンドラインのパーミッションを変更する postflight スクリプトを作成し、PackageMaker を離れて必要に応じてパーミッションを壊すことです。これは、それが行う他の変更に対処していません(ファイルが破損して、.pmdocを開くことさえできなくなることさえあります.

では、実際にビルド プロセスの一部として PackageMaker をうまく統合できた人はいますか? それとも、見た目と同じくらい根本的に壊れていて、他の誰もが賢明すぎてそれに触れることさえできないのでしょうか?

4

2 に答える 2

1

私は同様の問題を抱えており、興味深い観察に出くわしました。

具体的には、packagemaker を使用して kext を含む pkg を作成するときに、pkg 内の kext ファイルとフォルダーのアクセス許可が正しいアクセス許可 (例: rw-r--r--) で作成され、そうでない場合もあります (例: rw-rw-r--)。これはあなたの問題と似ていると思いますが、私は pmdoc を使用せず、常にコマンド ラインから packagemaker を実行します。しかし、私たちが経験している根本的な問題は同じだと思います。

違いを発見するのにしばらく時間がかかりました。kext のコピーが /System/Library/Extensions に存在し、ロードされている場合、pkg は正しい権限を持つ kext ファイルで作成されます。/System/Library/Extensions から kext をアンロードして削除すると、pkg が間違った権限で作成されます。これは非常識です!

私がインストーラーで行っていたことは、あなたが提案したことと似たようなものでした.kextファイルにすべての権限を正しく設定するpostflightスクリプトがあります。ただし、断続的なインストール エラーが発生しているのを見てきました。一部のユーザーでは、インストーラーを実行すると、メインのインストール ウィンドウで成功が報告されますが、別のダイアログが表示され、「システム拡張機能は使用できません」および「不適切にインストールされました」というメッセージが表示されます。その後、再起動後もドライバのロードに失敗します。インストールされた kext のパーミッションが正しいため、postflight スクリプトは正しく機能しています。ドライバーは、kextload を使用して手動で正常にロードすることもできます。

私がこれをたどったのは、インストールされた kext パーミッションが正しくない小さなウィンドウがあるように見えるということです。これは、(間違ったパーミッションを持つ) kext ファイルが正しい場所にコピーされてから、postflight スクリプトが実行されるまでの時間です。

そのため、最終的にこの提案に出くわしました: http://osdir.com/ml/darwin-kernel/2010-03/msg00017.html。kext を /System/Library/Extensions にインストールする代わりに、別の一時的な場所にインストールします。次に、postflight スクリプトで、この一時コピーのアクセス許可を正しい kext アクセス許可に設定し、それを /System/Library/Extensions フォルダーに移動します。まだ試していませんが、うまくいくと確信しています。

または、Vishal が提案することを実行することもできます。しかし、私はその解決策があまり好きではありません。これは、私たちのビルド システムが root が所有するファイルを作成する必要があることを意味します。したがって、変更を加えて再度ビルドするたびに、パスワードを入力する必要があります。ビルド時にパスワードを入力するのは正しくないようです。

于 2011-11-09T12:05:32.237 に答える
1

コマンドライン オプション [--no-recommend, -m] を試すことができます。ただし、パッケージ化する前に、すべてのファイルに正しい権限を設定する必要があります。参照:男のパッケージメーカー

于 2011-08-18T10:40:09.467 に答える