On 1/7/07, Neil Marko nmarko@isyssoft.com wrote:
Very sorry, I meant 0.9.28 and I forgot the patch!!!
Hope this helps.
Neil Marko
-------- Original Message -------- Subject: patch for bz 6855 Date: Sun, 07 Jan 2007 17:42:56 -0500 From: Neil Marko nmarko@isyssoft.com To: wine-patches@winehq.org
Hi all:
Sorry that this is not in GIT format. I do not have the time to learn this. I just wanted to get Off2K installed on 9.2.28.
My determination of this bug is that around version 9.2.20 or so, dlls/msi/files.c was rewritten. This bug seems to come from that. In the routine ACTION_InstallFiles, there is a loop of all the file objects. The first few steps of that loop attempt to detect a media change. That ultimately causes a call to load_media_info. The select statement in load_media_info has a where clause where table column LastSequence is greater than the value of the current file. The problem I detected is that what is selected in the first pass through the loop is the media for the next sequence (COMCTL.OCX) and not the current file. When a successful select occurs, the value of mi->last_sequence is updated from the select row, which is obviously not correct. When we loop eventually to the file structure where we should have a media change (COMCTL.OCX), we do not do the media change and then we do not extract the compressed file and the install fails. I solved this by simply setting mi->last_sequence to file->Sequence in the loop in ACTION_InstallFiles.
It is possible that maybe changing the ">=" to a "=" in the select in load_media_info might also solve this but I do not have enough knowledge about msi to know if that could cause any other problems. I think we would also have to change the error condition so that not reading rows there would not cause a failure. That seemed like a lot more work!
I eventually successfully installed Off2K on 9.2.28 with this. (Eventually since I have only an "upgrade" version of Off2K and therefore, some of the registry was not setup correctly. I made it work.)
It would be great if you could add a test for this case to dlls/msi/tests/install.c. That way we can verify that the fix is correct.
Thanks, James Hawkins