Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Extract Files from Internal Cab


2 replies to this topic

Tifoid

Tifoid
  • Members
  • 27 posts

Posted 12 January 2005 - 15:38

I'm trying to find a way to extract files from an internal cab.

I have a custom action that needs to extract files from a compressed MSI (all files packaged within the MSI) to the system at installtime (as part of a custom action). I thought that the file's binary data was stored in the Binary Table ... but it looks like that is not true. Does anyone know where to find this? Also, if the file's data is in the Binary Table how is that table corelated with the Files Table (the Binary Table has entries listed as binary1 ... and the File Table does not seem to reference this)?

NOTE: I'm doing this in a C++ custom action dll.

I know some people are going to say "use support files", but, I have 2 issues with doing it that way. 1. These files (and custom action) are provided by a merge module. 2. The files have a highly rigid directory structure (and I couldnt find a way to include the directory structure in support files - just the files).

Elmar

Elmar
  • Members
  • 11 posts

Posted 26 July 2005 - 10:07

Hi,

the files are not in the Binary Table. They are in the _Streams Table.
You should have a look at the MSDN for "_Streams Table".
But don't try to open your MSI with Orca and try to find _Streams Table,
it is only temporaly at install time!

by!


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 July 2005 - 21:58

Just to add some background information: a msi file is a COM structured storage that can contain multiple streams. One stream contains the msi database (including the Binary and all other tables). An internal CAB would be stored in a separate stream.
The Binary table is used to store support files such as bitmaps that are used on the dialogs, or DLLs that are called as a custom action. It does NOT contain your application files.