2017-12-05 18 views
1

私は複数のプロジェクトを持つ.NETソリューションを持っています。各プロジェクトには独自の出力フォルダ(project1からprojectN)があります。すべてのプロジェクトには、各フォルダにmsbuildが対応する共通ファイルがあります。 (これは正常です)。共通ファイルの名前、変更時刻、内容はまったく同じです。共通ファイルは各プロジェクトの合計サイズの約90%です。Inno Setupでは、インストーラに重複ファイルを何度も入れないでください

Inno Setup/Inno Script Studioでインストーラを作成したい 各プロジェクトには独自のコンポーネントがあります。以下のような

マイISSファイルの見た目(インストール時に選択することができます):

Source: "{#BuildOutputDirectory}_project1\*"; Excludes: "*.pdb,*.xml"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Components: project1 
Source: "{#BuildOutputDirectory}_project2\*"; Excludes: "*.pdb,*.xml"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Components: project2 
... 
Source: "{#BuildOutputDirectory}_projectN\*"; Excludes: "*.pdb,*.xml"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Components: projectN 

私の問題は、重複したファイルは、インストーラを複数回に含まれているということです。プロジェクトフォルダの合計サイズは517MB、uniqeファイルのサイズは78MB、インストーラサイズは98MB(圧縮lzma2ソリッド)です。予想されるインストーラのサイズは約21MB(私は7-Zipで一意のファイルを圧縮したので結果はこれです)

そして、重複したファイルを何度も圧縮するため、インストールの作成時間がかなり長くなります。しかし、これは実際問題ではありません。

重複ファイルをフィルタリングするにはどうすればよいですか? (私は1つのアイデアを持って、単純にそれらをフィルタリングする単純なアプリケーションでファイルを生成しますが、これは回避策に過ぎません)

答えて

0

私は考えていますが、それらは回避策に過ぎません。

いい方法はありません。

Inno Setupプリプロセッサ(Exec preprocessor functionを使用)からアプリケーション(または単純な[PowerShell?]スクリプト)を呼び出すことを検討してください。この方法で.issは、インストーラをコンパイルする前にアプリケーション/スクリプトを実行する必要なく、単独で動作します。


実際には、外部アプリケーション/スクリプトを必要とせずに、Inno Setupプリプロセッサで完全に実装できます。しかし、これをプリプロセッサでコーディングするのはかなり難しく、コードは醜いでしょう。同様のタスクのために

は、以下を参照してください。

関連する問題