1

更新:この質問のタイトルを、以下の回答のいくつかから本当に必要なものを反映するように変更しました。

Linux 内で、Visual Studio 2010 のネイティブ展開ツール内から生成された MSI から特定の実行可能ファイルを取得できるようにしたいと考えています。しかし、cabextract によって取得される名前はすべてファンキーです。

-rw-r--r-- 1 root wheel     159 Jul 16 17:26 _07DAC52BD05CC8A8D6B2195350CC8C13
-rw-r--r-- 1 root wheel   34304 Oct 29 12:10 _09C75789ECE59A0AC891A85289474E75
-rw-r--r-- 1 root wheel    8704 Oct 29 12:10 _0CB147FD23752DEFAC3B73925E1E38DB
-rw-r--r-- 1 root wheel     766 Oct 29 12:10 _1D0B16C3296C400D9FD4018E77AC0B05
-rw-r--r-- 1 root wheel   10752 Oct 29 12:10 _24792622E94742D68A455C4F1D54D51F
-rw-r--r-- 1 root wheel     159 Oct 29 12:10 _90A663D25084CD22A230CCB8F55A3700
-rw-r--r-- 1 root wheel   12800 Oct 29 12:10 _BC47FBF48B42E5E71C9901188422814A
-rw-r--r-- 1 root wheel  873984 Oct 29 12:10 _EAFFD36EAA914E7F9D3DAC8BA13DFB6A
-rw-r--r-- 1 root wheel    4608 Oct 29 12:10 _F434E52DDE0AB5C2D68CE7A78B0B2477
-rw-r--r-- 1 root wheel  467456 Oct 29 12:10 _F90AF0EB7EEF445A92623132D00191EA
-rw-r--r-- 1 root wheel  421200 Oct 29 12:10 F_CENTRAL_msvcp100_x86.AFA96EB4_FA9F_335C_A7CB_36079407553D
-rw-r--r-- 1 root wheel  773968 Oct 29 12:10 F_CENTRAL_msvcr100_x86.AFA96EB4_FA9F_335C_A7CB_36079407553D

ソリューションのリリース ディレクトリと比較すると、必要なファイル (itragent.exe) が実際には _F90AF0EB7EEF445A92623132D00191EA であることがわかります。Linux 内でプログラムによってその結論に達する方法はありますか? cabextract を使用するか、他のユーティリティを使用しますか? そこには XML テキストである 2 つのファイルがありますが、.NET Framework のバージョン情報だけが含まれています。

別の方法として、VS 2010 に強制的に MSI 内の実行可能ファイルを正しい名前でファイルさせる方法はありますか?

4

2 に答える 2

1

cabファイルは、.msiデータベースの主キーにちなんで名付けられています。彼らの本名を見つけるには、データベースを調べる必要があります。必要なテーブルには、 (からのルックアップ)だけが必要な場合はFileが含まれ、相対パスの場合は、Directory (ディレクトリの場所の自己リンクツリー。it)およびコンポーネントを多対多のルックアップテーブルとして使用します。FileNameFile

病理学的なケースでは、完了後にキャブ内の複数のエントリが同じパス名を持つ可能性があるため、これらを特別に処理する必要がある場合があることに注意してください。これは比較的まれなはずです。

于 2012-10-30T12:19:44.887 に答える
1

問題があります。cab には、ファイルの「真の」名前に関する情報が含まれていません。ただし、これらのファイルの順序が含まれています。MSI ファイルには tableFileがあり、すべての圧縮ファイルにはSequence番号があります。この番号は、キャビネット内のファイルのシーケンス番号と同じである必要があります。

FileNameMSIを開いて、列とそのSequence番号から実際のファイル名を取得し、何らかの方法でそれらをcabシーケンスと同一視できると思います。

便利なリンク: CAB 形式の説明、ファイルテーブルおよびWindows インストーラー SDKに関する情報

于 2012-10-30T12:11:56.587 に答える