I wanted to view the strings/text that are/is displayed on the UI when MSI is run in binary mode.
basically i have the localized wxl files and the localized msi. wanted to compare the text.
So my approach is to view the binary content of the strings to compare. Can anyone please suggest me what tools i can use?
Using orca I am able to see the strings. But I would like to see the binary/hex value for those.
Thanks a lot
Best Regards, Marc
I don't know tools which export strings as binary. In the most cases it is really not needed.
If you do need to get binary information about the strings you can use
IStorage::OpenStream
,IStream::Stat
withSTATFLAG_NONAME
parameter andIStream::Read
to read information from the MSI directly. The information about the stings are saved in streams with the name "_StringData" and "_StringPool". The names of the streams are in a simple way encoded. If you have an interest I could post you the code which shows how to decode the names.UPDATED: I prepared small demo from my old utility. The demo loads the strings from the "_StringData" and "_StringPool" and dump the information in the readable format. If you adjust the constants in the line
(see below) you can dump more full information. In the same way you can easy modify the code to save the corresponding streams in a file as binary.
The C code you find below
An example of the output of
vs_setup.msi
of Visual Studio 2010 Ultimate:I spend many time at that time to find out how to decode String ID which has size 3 bytes and not only 2 bytes which is typical for small setups with not so long string table.