[Bug 3709] Adobe Photoshop Elements 4 trial installer exits silently

Wine Bugs wine-bugs at winehq.org
Wed Jan 11 03:45:34 CST 2006


http://bugs.winehq.org/show_bug.cgi?id=3709


mike at codeweavers.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED




------- Additional Comments From mike at codeweavers.com  2006-11-01 02:30 -------

This one is interesting.  Installing requires the windows version set to winxp,
but it fails after that with the error message:

err:msidb:load_string_table string table load failed! (0035e981 != 001ce981)

The following notes are mainly for me, but might be useful to somebody else
trying to understand the format of the MSI string table.

There's a very long string in the string table (more than 0x1a0000 bytes), and I
don't exactly understand the format of the entries that declare it:

  str#  len%2^16  ref     real len

  4820      0      1
  4821    34523    1      100059
  4822      0      1 
  4823      0      2
  4824      0      1
  4825     6197    1      1710133
  4826      0      0
  4827      24     1        24
  4828      0      1
  4829    34124    1       99660

So we need to calculate "real len" as above... 

"str#" is the offset into the table, and I interpret the unsigned short integer
pairs "(len%2^16) ref" as follows:

"n 1"  -> a string of n bytes  (where n < 2^16)
"0 0"  -> a hole in the string table
"0 m", "n 1"  -> a string of m*65536+n bytes  (should give up to 4G)
"0 k", "0 m", "n 1" -> shouldn't be necessary... 

I'm still not sure how a "0 n" followed by "0 m" is meant to be interpreted. 
Looking at the actual size of the string, it seems like it will increase the
length of the next string by 0xa00000*m + 0x10000*n ... though I probably need
to write some tests to confirm this.


------- Additional Comments From mike at codeweavers.com  2006-11-01 03:45 -------

This one is interesting.  Installing requires the windows version set to winxp,
but it fails after that with the error message:

err:msidb:load_string_table string table load failed! (0035e981 != 001ce981)

The following notes are mainly for me, but might be useful to somebody else
trying to understand the format of the MSI string table.

There's a very long string in the string table (more than 0x1a0000 bytes), and I
don't exactly understand the format of the entries that declare it:

  str#  len%2^16  ref     real len

  4820      0      1
  4821    34523    1      100059
  4822      0      1 
  4823      0      2
  4824      0      1
  4825     6197    1      1710133
  4826      0      0
  4827      24     1        24
  4828      0      1
  4829    34124    1       99660

So we need to calculate "real len" as above... 

"str#" is the offset into the table, and I interpret the unsigned short integer
pairs "(len%2^16) ref" as follows:

"n 1"  -> a string of n bytes  (where n < 2^16)
"0 0"  -> a hole in the string table
"0 m", "n 1"  -> a string of m*65536+n bytes  (should give up to 4G)
"0 k", "0 m", "n 1" -> shouldn't be necessary... 

I'm still not sure how a "0 n" followed by "0 m" is meant to be interpreted. 
Looking at the actual size of the string, it seems like it will increase the
length of the next string by 0xa00000*m + 0x10000*n ... though I probably need
to write some tests to confirm this.


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list