Extract .msi archive format on Ubuntu
I was googling for some information which was only available in a .msi archive format which I could not extract directly on ubuntu. Since I didnt have windows on the machine, I could not extract it there and just copy the files over to linux.
On ubuntu, installing WINE (and trying to extract with msiexec) didnt work -- wine kept whining about it not being an executable (on linux? *g*), the source being from an untrusted source, etc...Next, I tried p7zip -- install it with
Then, change directories, and type:
sudo apt-get install p7zip-full
While this extracts all the files, it will still not be easily viewable nor is it usable -- windows executable dlls, bitmaps, windows installer package, microsoft cabinet archive, some icons, and other useless cruft compressed in the folder. Other than manually digging out text files for the information, there was no easy option.
7z x filename.msi
The data was locked inside the database (hint, extract the cabinet archive) in the .mbd (MS Access) format. Google threw some perl modules to convert a .mbd file to .txt. BUT there was a gnome mbd-reader tool which you can easily install with
Then, click on Applications>Office>MDB Viewer.
sudo apt-get install mdbtools
sudo apt-get install mdbtools-gmdb
In Ubuntu, mdbtools includes command line tools such as mdb-export and mdb-schema and to export data from the MS Access .mdb files, extract contents from each table from each .mdb file through the shell --for which one needs to determine table names before using:
mdbtools <filename.mdb> <table name> <output_filename.txt>
The compressed archice included among other things, files with .ocx and .tlb extensions. More googling (yay!)
mdb-export filename.mdb tblfoo
TLB, a Visual Basic OLE Type Library, is a binary file containing all the type information for using procedures or classes in DLLs.
o. mdb-tools and postgresql script