6

ダウンロードしたユーザーによって実行ファイルが微妙に異なるクロスプラットフォームアプリを配布したい。これは、ダウンロード時にユーザー固有のものに置き換えられる実行可能ファイルのどこかにプレースホルダー文字列を配置することによって行われます。

これらの文字列置換を行う必要がある Web サーバーは Linux マシンです。Windows の場合、実行可能ファイルはインストーラー .exe に圧縮されていないため、文字列の置換は簡単です。

圧縮されていない Mac OS X .dmg ファイルの場合、これも簡単です。ただし、gzip または bzip2 で圧縮された .dmg ファイルはそれほど簡単ではありません。たとえば、後者の場合、圧縮された .dmg は 1 つの大きな bzip2 圧縮ディスク イメージではなく、いくつかの異なる bzip2 圧縮部分 (異なるブロック サイズ) と plist サフィックスで構成されます。また、bzip2 でさまざまな部分を解凍して再圧縮しても元のデータにはならないため、Apple はコマンドライン ツールとは異なるパラメーターを bzip2 に使用していると思います。

Linux (hdiutil がない) で圧縮されていない .dmg から圧縮された .dmg を生成する方法はありますか? または、事前に生成せずにカスタマイズされたアプリケーションを作成するための別の提案はありますか? ユーザーによる入力なしで機能するはずです。

4

3 に答える 3

5

ここでは少し遅すぎることに気づきましたが、まったく同じことをしたかったので、libdmgを使用して動作させました。https://github.com/planetbeing/libdmg-hfsplus

基本的に、libdmgを使用してdmgファイルをhfs +ファイルシステムを含む非圧縮ファイルに解凍し、hfs +ファイルシステム内のファイルで遊んで、正しいチェックサムを持つdmgファイルとして再びまとめることができます。

イメージがマウントされる前にEULAを表示するなど、派手なdmg機能を使用する場合、これらはプロセスを生き残ることができません。ただし、背景画像などは機能します。

于 2011-06-22T16:54:37.460 に答える
0

Web サーバーとクライアントが gzip エンコーディングをサポートしている場合、サーバー上で圧縮されていないファイルを処理できますが、Web サーバー/Web クライアントによってそれぞれその場で圧縮/解凍されます。

たとえば、apache の mod_gzip です。

それ以外の場合は、dmg を 3 つの部分に分割できます。

  • 置き換えたいものの前のもの

  • 置き換えたい文字列

  • 置き換えたいものの後のもの

    gzip ストリームがこれらのポイントで分割可能である場合は、置換する gzip された文字列に前と後ろを連結するだけです。これにより、オンザフライで生成できます。

于 2009-12-09T19:29:00.363 に答える
0

通常の読み取り専用の圧縮された dmg をリリースします。次に、必要な変数を設定するプリフライト スクリプトを含むパッケージ インストーラーにアプリをバンドルします。

于 2010-04-06T05:51:03.553 に答える