更新:我改變了這個問題的標題,以反映真正需要從下面的一些答案。如何在Linux中從MSI獲取文件的真實名稱(或者,如何讀取MSI數據庫)?
我希望在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文本,但他們只有.NET Framework版本信息,沒有別的。
另一種方法,有沒有辦法強制VS 2010使用正確的名稱在MSI中存檔可執行文件?
啊,我明白了。現在我需要的是從Linux內部讀取這個數據庫的一些方法。是否有一些已經制作的實用程序能夠做到這一點? – JCCyC
它看起來像Wine支持Windows Installer API。您可能會開始查找API:MsiOpenDatabase,MsiDatabaseOpenView,MsiViewExecute,MsiViewFetch,MsiRecordGetString。 –