1

私の会社は、いくつかのQtベースのMacOS /XGUIアプリケーションを含むパッケージを出荷しています。パッケージは.dmgファイルとして出荷され、「インストール」とは、.dmgアイコンをダブルクリックしてから、1つまたは複数のアプリケーションアイコンを保持したい場所(たとえば、自分のアプリケーションフォルダ)にドラッグすることです。

これは問題なく動作しますが、.dmgファイルはかなり大きい(たとえば40 + MB)ので、ダウンロードにかかる時間を短縮するために、可能であればサイズを小さくしたいと思います。私が気づいたことの1つは、パッケージ内のすべてのアプリケーションに共通の多数の大きなファイル(Qtライブラリ、グラフィックリソースファイルなど)があり、現在、これらの各ファイルの個別のコピーがblah内に含まれていることです。含まれている各アプリケーションのapp/Contentsフォルダー-おそらくこれが.dmgファイルを非常に大きくしている理由です。

だから私の質問は、これらのファイルのいくつかのコピーを含める必要がないように.dmgを変更する方法はありますか?したがって、それほど大きくはありませんか?理想的には、ユーザーが特別なインストーラープログラムを実行する必要がなく、ユーザーがアプリケーションを別の(または予期しない)フォルダーに移動したり、それらのいずれかを削除したりしても、アプリケーションが破損することなく、これを実行したいと思います。

これはハードリンクにとって理想的なアプリケーションのようです。つまり、1つのアプリケーションに実際のファイルが含まれ、他のアプリケーションにそれらのファイルへのハードリンクが含まれるように、.dmgファイルへの入力を準備します。 .dmgファイルからアプリケーションを解凍すると、ファイルは互いに論理的に独立したままになります(特に、ユーザーがアプリケーションAを移動または削除しても、アプリケーションBは動作を停止しません)。ただし、AFAICT MacOS / Xは、TimeMachineという名前ではないアプリケーションのハードリンク[編集:ディレクトリへ]をサポートしていません。:^(

4

1 に答える 1

2

(自分の質問に答えるのは漠然と不道徳に感じますが、解決策にたどり着いたので、質問を開いたままにしておくのではなく、とにかくやります)

解決策は、hdiutil を実行して .dmg ファイルを作成する前に、重複ファイルを最初に検出されたファイルへのハードリンクに置き換えることです。私はこの目的のために書いた単純な C++ プログラムを使用してこれを行いましたが (私が頑固なので)、これを行うためのfreedupなどのフリーウェア プログラムもいくつかあります。私はそれらを試していませんが、すべてうまくいくと思います。

于 2012-08-15T04:39:40.183 に答える