(Mac以外のプラットフォームで)ネイティブMac OS Xインストーラーをビルドする方法は?

StackOverflow https://stackoverflow.com/questions/283480

  •  08-07-2019
  •  | 
  •  

質問

Mac以外のプラットフォームで、アプリケーション用のネイティブMac OS Xインストーラーを構築するにはどうすればよいですか

たとえば、Windows PCとJavaアプリケーションがあります。 Windows pcで、インストーラー(おそらく.dmgアーカイブ内)をビルドして、Appleインストーラーで動作するようにします。

役に立ちましたか?

解決

Mac以外のプラットフォームでネイティブのMac OS Xインストーラーを作成できるようになりました。 Louis Gerbargとして、トリッキーなビットはBOM(部品表)ファイルです。ただし、オープンソースバージョンのmkbom(Joseph Cofflandによるosxbomコードに基づく)は、次の場所で入手できます。

http://hogliux.github.io/bomutils

このWebサイトには、LinuxでMac OS Xインストーラーを作成するためのステップバイステップのチュートリアルも用意されています( http://hogliux.github.io/bomutils/tutorial.html )。

私の会社はこの方法でLinuxでMac OS Xインストーラーを定期的に構築していますが、これまでのところ大きな問題はありませんでした。

他のヒント

すでに他の人が指摘しているように、あなたは本当にこの問題に対する難しい解決策を取っているので、そうする正当な理由がない限り、ユーザーはあなたの名前を呪います。確かに、特定の種類のアプリケーションにはMac OSXのインストーラーが必要です。これらには通常、次のものが含まれます。

  • カスタムドライバをインストールするアプリケーション(カーネル拡張など)
  • 何らかの理由でアプリケーションバンドル内にパッケージ化できないフレームワークまたはその他のリソースをインストールする必要があるアプリケーション
  • システムサービスとして実行する必要があるため、起動中にアプリを起動するためにいくつかのインストール後スクリプトを実行する必要があるアプリケーション
  • ユーザーのシステムに何らかの変更を加える必要がある(つまり、フォルダーなどにアクセス許可を設定する)不十分なプログラム。開発者の手は、可能な限り最も苦痛な方法でアプリケーションを配布するためにマーケティング部門に拘束されます

わかりました、最後の点は少し皮肉ですが、ここで私のドリフトを取得しますか? :)基本的に、通常のエンドユーザーアプリケーションを作成する場合は、Macユーザーが期待する通常の方法で配布する必要があります。これは、アプリケーションのバンドルを含むDMGファイルです。または、本当に空想になりたい場合は、「アプリケーション」にエイリアスを付けます。ユーザーがそこにプログラムをドラッグできるように、DMG内のフォルダー。単にシステムによって実行するのではなく、システムにインストールする必要がある何かを書いている場合を除き、ここでインストーラを使用する理由はありません。また、これはOSXであり、既に完全に機能するJava JREが含まれているため、インストーラーなどでJREをパッケージ化する必要はありません。

これでこの質問をしたことできちんとscられたので、あなたのソフトウェアが上記のカテゴリーのいずれかに該当すると仮定して答えます。本当に、あなたの最善の策は、VISEインストーラーなどの商用ソリューションを使用することです(このツールで作られた製品をインストールすると、Macユーザーの大多数が恐怖に巻き込まれると自信を持って述べることができます)ここで探していることを正確に行うため-基本的に、単一のインストーラーファイルからサポートするさまざまなプラットフォーム用にビルドするクロスプラットフォームインストーラーを作成するために。

しかし、ここでの最善の策は、そのプラットフォームのユーザーが最も快適なことをすることです(だから、質問に対するすべての回答はインストーラーを作らないように促します)。ただし、実際にインストーラーを作成する必要がある場合は、クロスプラットフォームフレームワークを使用する必要があります。 Windowsユーザーは、標準のMSIインストーラーが表示されたときに最も居心地がよくなり、Macユーザーは、Apple Installer pkgが最も居心地がよくなります。ただし、PackageMakerプログラムは非常に制限されているため、必要な場合は iceberg

だから、簡単な質問をいくつか。

最初に、なぜインストーラーが必要なのですか?ほとんどのMacユーザーは、ドラッグインストールされたアプリを好みます。 Mac OS X固有のコードを記述していない場合、アプリケーションサポートやLaunchDaemonsなどの特別な場所にビットを配置する必要があるとは考えにくいです。持っているものがすべて1つのフォルダーに入れられているのに、どうしてインストーラーが必要なのでしょうか?

第二に、MacでMacインストーラーをビルドすることが問題になるのはなぜですか?確かにアプリをテストするためのマシンがあります(Macでテストせずに盲目的にMacに出荷しているだけではありません)。

さて、PCで実際にこれをビルドする正当な理由があると仮定して、簡単ではないこともあると言いました。基本的に、.pkgは一連のテキストスクリプト、ローカライズ、アーカイブファイル(Archive.pax.gz)、および部品表(Archive.bom)です。

ビルド間の変更があまりない場合、Macでインストーラーを作成し、bomとpax.gzを再構築し、既存の.pkgに置き換えて、いくつかのメタデータをバッチ処理します。 paxは簡単に処理できる必要があります(paxは標準のアーカイブ形式です)が、bomファイルは少し複雑になる可能性があります。公に文書化されているとは思わないからです。ダーウィンの一部(オープンソースではありません)。したがって、それを把握し、カスタムツールを作成してbomファイルを作成する必要があります。

つまり、これは大量の作業になる可能性があります。

Macにアプリをインストールする通常の方法は、アプリをアプリケーションフォルダーにドラッグすることです。ほとんどのプログラムは、アプリとアプリケーションフォルダーへのシンボリックリンクを含むDMGとして提供されます。なぜあなたはそれを他の方法で望みますか?素晴らしいMacアプリケーションを構築するには、Macを考える必要があります!ルックアンドフィールは、特にMacユーザーにとって非常に重要です。

BOMファイルの読み取りについては、次のコードをご覧ください。 https://cauldrondevelopment.com/svn/osxbom/trunk

すべてを1つのJARファイルに入れて、ZIPに追加します。完了。

しかし、真剣に、最初にテストせずにMacintoshユーザーにアプリケーションを配布したいのですか?あなたはどんな惑星にいます!?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top