http://bugs.winehq.org/show_bug.cgi?id=11537
Summary: Sid Meier's Pirates! install fails with 1603 (failing to request disk 2) Product: Wine Version: 0.9.55. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msi AssignedTo: wine-bugs@winehq.org ReportedBy: cycoone@hotmail.com CC: cycoone@hotmail.com
Sid Meier's pirates install fails. The installation returns a 1603 error, while the installer reports that it is copying 2K Games.url.
The console output shows:
err:msi:ready_media Cabinet not found: L"E:\mnt\pirates1\Language.cab" err:msi:ACTION_InstallFiles Failed to ready media err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1603 err:ole:ClientRpcChannelBuffer_SendReceive called from wrong apartment, should have been 0x1500000031 err:ole:xCall RpcChannelBuffer SendReceive failed, 8001010e
Language.cab is on Disk 2, so the installer should have requested that I switch disks. I can personally attest this is a regression since 0.9.29, and AppDB suggests it is a regression is 0.9.52. (There were no tests on 53 or 54)
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #1 from Austin English austinenglish@gmail.com 2008-02-11 14:32:14 --- Can you please run a regression test:
http://wiki.winehq.org/RegressionTesting
Also, please attach full terminal output.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #2 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 09:52:44 --- Performing a regression test between 0.9.45 (known good) and 0.9.50 (known bad) I ran into another regression at wine-0.9.49-196-ga6dd479 which prevents testing this issue. Is there some way to get around this regression without messing up the binary search?
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #3 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 10:44:00 --- (In reply to comment #2)
Performing a regression test between 0.9.45 (known good) and 0.9.50 (known bad) I ran into another regression at wine-0.9.49-196-ga6dd479 which prevents testing this issue. Is there some way to get around this regression without messing up the binary search?
It appears that the installer is largely unstable between 0.9.49 where it worked, and 0.9.50 where this bug first occurred.
Here are my results:
wine-0.9.49 good wine-0.9.49-196-ga6dd479 untestable (cannot run install shield) wine-0.9.49-235-ga0c3816 untestable (fails to copy first file with 1603) wine-0.9.50 bad
What should I do next to help out?
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #4 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 11:07:00 --- Created an attachment (id=10727) --> (http://bugs.winehq.org/attachment.cgi?id=10727) wine-0.9.50 Console Output
Console output from 0.9.50 (the first release version with this bug)
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #5 from Austin English austinenglish@gmail.com 2008-02-12 11:39:46 --- (In reply to comment #2)
Performing a regression test between 0.9.45 (known good) and 0.9.50 (known bad) I ran into another regression at wine-0.9.49-196-ga6dd479 which prevents testing this issue. Is there some way to get around this regression without messing up the binary search?
Can you describe the regression better? You could try resetting git to 0.9.46/7, see if they're good/bad, then use that as the known good/bad in a separate regression test. Without knowing what's wrong, it's hard to say.
It appears that the installer is largely unstable between 0.9.49 where it worked, and 0.9.50 where this bug first occurred.
Here are my results:
wine-0.9.49 good wine-0.9.49-196-ga6dd479 untestable (cannot run install shield) wine-0.9.49-235-ga0c3816 untestable (fails to copy first file with 1603) wine-0.9.50 bad
What should I do next to help out?
If this is the same regression, then you can try 'random' patches in between, or you could find the patch(es) that fix install shield using reverse regression testing: http://wiki.winehq.org/ReverseRegressionTesting
In short, describe your problem(s) more, but it doesn't look like an easy solution.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #6 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 12:02:47 --- (In reply to comment #5)
(In reply to comment #2)
Performing a regression test between 0.9.45 (known good) and 0.9.50 (known bad) I ran into another regression at wine-0.9.49-196-ga6dd479 which prevents testing this issue. Is there some way to get around this regression without messing up the binary search?
Can you describe the regression better? You could try resetting git to 0.9.46/7, see if they're good/bad, then use that as the known good/bad in a separate regression test. Without knowing what's wrong, it's hard to say.
Sorry, I shouldn't have replied to this post. I reset git to 0.9.49 and it was good, as have been all versions tested before that point so I have no reason to suspect any problems with 46/47 etc.
It appears that the installer is largely unstable between 0.9.49 where it worked, and 0.9.50 where this bug first occurred.
Here are my results:
wine-0.9.49 good wine-0.9.49-196-ga6dd479 untestable (cannot run install shield) wine-0.9.49-235-ga0c3816 untestable (fails to copy first file with 1603) wine-0.9.50 bad
What should I do next to help out?
If this is the same regression, then you can try 'random' patches in between, or you could find the patch(es) that fix install shield using reverse regression testing: http://wiki.winehq.org/ReverseRegressionTesting
In short, describe your problem(s) more, but it doesn't look like an easy solution.
Pirates! uses two cds, and the installer should prompt the user to switch cds about half way through the install to copy the rest of the programs files from. (The files are stored for the most part in a series of .cab files.)
In versions of wine up to 0.9.49, this worked properly. The installer would prompt that the user switch cds, and when they clicked ok it would resume the install from the second cd.
From 0.9.50 onwards, the installer no longer prompts the user for the second
cd. It instead continues to attempt to use a file which is located on the second cd, and not finding it, displays a 1603 error and aborts.
James Hawkins made most of the changes during this period and a lot of them seem to be related to cabinet files, so he is likely the best person to ask.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #7 from James Hawkins truiken@gmail.com 2008-02-12 12:11:02 --- As there were lots of changes made, we still need the results of the regression test between 0.9.49 and 0.9.50. As Austin said, you can use reverse regression testing to find the patch that fixed the installshield problem and use that patch when doing the actual regression test. Same for any other problems encountered during a regression test. In the meantime, please attach a compressed +msi,+msidb log and the .msi file (compressed).
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #8 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 13:00:06 --- Created an attachment (id=10731) --> (http://bugs.winehq.org/attachment.cgi?id=10731) WINEDEBUG=warn+msi,warn+msidb ./wine /mnt/pirates1/setup.exe
msi debugging output from 0.9.50 (compressed with gzip)
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #9 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 13:00:41 --- Created an attachment (id=10732) --> (http://bugs.winehq.org/attachment.cgi?id=10732) msi file for Sid Meier's Pirates!
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #10 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 15:28:35 --- (In reply to comment #7)
As there were lots of changes made, we still need the results of the regression test between 0.9.49 and 0.9.50. As Austin said, you can use reverse regression testing to find the patch that fixed the installshield problem and use that patch when doing the actual regression test. Same for any other problems encountered during a regression test. In the meantime, please attach a compressed +msi,+msidb log and the .msi file (compressed).
wine-0.9.49-264-g075e84b fixes the bug where the installer would give a 1603 error and abort copying the first file. This same revision exhibits my bug, where it gives a 1603 and aborts when it should ask for the second disk.
I have a feeling that this bug was produced during a time when it could not be tested or along with another bug that was fixed later.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #11 from James Hawkins truiken@gmail.com 2008-02-12 15:39:15 --- Stephen, you know the patch that fixes the installshield problem, so when doing the regression test and you experience the installshield bug, apply the patch from said commit, rebuild and try again. This way you *can* do the regression test.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #12 from Stephen E. Baker cycoone@hotmail.com 2008-02-12 21:55:07 --- I will get back to this tomorrow, using wine-0.9.49-216-g78eead9 to create a patch against earlier revisions suffering from *1. If anyone is working on this in the mean time hopefully these git regression test results can help. (I have left only the noteworthy results)
wine-0.9.49 *good wine-0.9.49-215-g05a9678 untestable (*1) wine-0.9.49-216-g78eead9+264patch *bad wine-0.9.49-264-g075e84b *bad (patch from this = 264patch, needed for earlier revisions) wine-0.9.50 *bad
*1 - 1607: Unable to install InstallShield Scripting Runtime regression *bad - suffers 'not prompting for second disk regression' *good - no regression
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #13 from Stephen E. Baker cycoone@hotmail.com 2008-02-13 14:46:43 --- Ok, the significant portion of my regression results
wine-0.9.49 *good wine-0.9.49-159-ga97d655 *good wine-0.9.49-160-gbb747e4 (*1) + 162patch (*1) + 216patch (*2) + 264patch (*bad2) wine-0.9.49-161-gbb747e4 (*1) + 216patch (*3) untestable wine-0.9.49-162-gb1507ae (*1) + 216patch (*2) + 264patch (*bad2) wine-0.9.49-216-g78eead9 (*4) + 264patch (*bad) wine-0.9.49-217-g3c8663b (*4) + 264patch (*bad) wine-0.9.49-264-g075e84b *bad wine-0.9.50 *bad
*1 - 1607: Unable to install InstallShield Scripting Runtime regression *2 - 1627: ERROR_FUNCTION_FAILED *3 - Patch fails *4 - 1603 error when starting to copy files *bad - suffers 'not prompting for second disk regression' with 1603 error *bad2 - same as bad, but error message is 1627: ERROR_FUNCTION FAILED *good - no regression
So as you can see, wine-0.9.49-160 patched with 162, 216, and 264 is the first version to exhibit the bug. I haven't traced down where the slight differences in the error message came from, but it's likely the result of a minor change in dlls/msi/files.c unrelated to my bug. Hopefully with this information you will be able to find how it use to detect that the second disk was needed and why it isn't now.
Note: Prior to the regression the switch disks dialog had an OK and Cancel button, but clicking the Cnacel button would just reprompt you. Perhaps this could be fixed at the same time.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #14 from James Hawkins truiken@gmail.com 2008-02-13 16:35:30 --- I need the actual commit id. wine-0.9.49-160 doesn't mean anything to me.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #15 from Stephen E. Baker cycoone@hotmail.com 2008-02-13 20:45:24 --- (In reply to comment #14)
I need the actual commit id. wine-0.9.49-160 doesn't mean anything to me.
They were all in that last comment: wine-0.9.49-160-gbb747e4
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #16 from James Hawkins truiken@gmail.com 2008-02-13 21:40:49 --- (In reply to comment #15)
They were all in that last comment: wine-0.9.49-160-gbb747e4
That's not a commit id. This is an example of a commit id:
commit 14f7a59270579d57244e7ce3527f157233f0bc3b
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #17 from Lei Zhang thestig@google.com 2008-02-13 23:01:39 --- (In reply to comment #16)
(In reply to comment #15)
They were all in that last comment: wine-0.9.49-160-gbb747e4
That's not a commit id. This is an example of a commit id:
commit 14f7a59270579d57244e7ce3527f157233f0bc3b
the commit id is probably bb747e4fbe6619fa0e862102cc26456118355c67
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #18 from Stephen E. Baker cycoone@hotmail.com 2008-02-14 05:43:39 --- (In reply to comment #17)
(In reply to comment #16)
(In reply to comment #15)
They were all in that last comment: wine-0.9.49-160-gbb747e4
That's not a commit id. This is an example of a commit id:
commit 14f7a59270579d57244e7ce3527f157233f0bc3b
the commit id is probably bb747e4fbe6619fa0e862102cc26456118355c67
That it correct. It's easy to get this value from the numbers I gave, as they are all git needs to move to a particular commit.
git reset --hard wine-0.9.49-xxx-xxxxxxx git show | grep commit
anyway the commits which might have caused the bug are: wine-0.9.49-160-gbb747e4: bb747e4fbe6619fa0e862102cc26456118355c67 wine-0.9.49-162-gb1507ae: b1507aee989b168e8c08d0202ac60e467db25871 wine-0.9.49-216-g78eead9: 78eead93fd874634fdffd7c93e015bca4da0d755 wine-0.9.49-264-g075e84b: 075e84bd90bc5dae9cb050d110281ce8ea1b7256
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #19 from James Hawkins truiken@gmail.com 2008-02-14 12:10:25 --- I can't afford time on this bug unless I have *the* commit that caused the bug.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #20 from Stephen E. Baker cycoone@hotmail.com 2008-02-14 13:11:24 --- (In reply to comment #19)
I can't afford time on this bug unless I have *the* commit that caused the bug.
160 is the commit with the label 'Simplify ready-media' which touches the: "if (type == DRIVE_CDROM || type == DRIVE_REMOVABLE) lines" and moves the msi_change_media call. I only listed the others because this commit broke other things and those other commits were needed to get them working again, so they should be considered as a whole.
Assuming 160 is the cause of the problem, the only method you have to look at is ready_media; however I don't really know how msi/wine works. Does ready_media get called for each file, or just once per media? I am a developer, I've just never worked with WINE, so with a little bit of guidance I may be able to write the patch if you don't have time.
http://bugs.winehq.org/show_bug.cgi?id=11537
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression
--- Comment #21 from Austin English austinenglish@gmail.com 2008-02-14 16:11:47 --- (In reply to comment #20)
(In reply to comment #19)
I can't afford time on this bug unless I have *the* commit that caused the bug.
160 is the commit with the label 'Simplify ready-media' which touches the: "if (type == DRIVE_CDROM || type == DRIVE_REMOVABLE) lines" and moves the msi_change_media call. I only listed the others because this commit broke other things and those other commits were needed to get them working again, so they should be considered as a whole.
Stephen, in the future, please post the commit id. It is much easier to find/fix a problem with this information.
James, here's the commit:
bb747e4fbe6619fa0e862102cc26456118355c67 - msi: Simplify ready_media.
http://source.winehq.org/git/wine.git/?a=commit;h=bb747e4fbe6619fa0e862102cc...
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #22 from Stephen E. Baker cycoone@hotmail.com 2008-02-15 06:52:29 ---
James, here's the commit:
bb747e4fbe6619fa0e862102cc26456118355c67 - msi: Simplify ready_media.
http://source.winehq.org/git/wine.git/?a=commit;h=bb747e4fbe6619fa0e862102cc...
I've looked over the diff in detail and it appears that there is one condition where the results would be different:
if (file->IsCompressed && GetFileAttributesW(mi->source) == INVALID_FILE_ATTRIBUTES) && (!(package->BaseURL && UrlIsW(package->BaseURL, URLIS_URL))) && ((!(mi->volume_label && mi->disk_id > 1))|| source_matches_volume(mi, source_dir)|| (!(type==DRIVE_CDROM || type==DRIVE_REMOVEABLE)));
In this case, the pre-commit would default to requesting: msi_change_media(package, mi);
and the post-commit would: ERR("Cabinet not found: %s\n", debugstr_w(mi->cabinet)); return ERROR_INSTALL_FAILURE;
I haven't figured out how to use the winedbg yet well enough to check these conditions, perhaps someone else could? In the mean time I assume simply replacing the error with msi_change_media would be too much of a hack.
This is in: static UINT ready_media(MSIPACKAGE *package, MSIFILE *file, struct media_info *mi) in dlls/msi/files.c
http://bugs.winehq.org/show_bug.cgi?id=11537
Stephen E. Baker cycoone@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Installer
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #23 from James Hawkins truiken@gmail.com 2008-02-16 18:15:05 --- Do you have the CD device properly set up in winecfg? Are you using physical media or ISOs? If you're using physical media, how are you ejecting the first CD? If you're using ISOs, do you own the loopback device?
You should know that I just installed this app and it worked fine.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #24 from Stephen E. Baker cycoone@hotmail.com 2008-02-17 09:47:58 --- (In reply to comment #23)
Do you have the CD device properly set up in winecfg? Are you using physical media or ISOs? If you're using physical media, how are you ejecting the first CD? If you're using ISOs, do you own the loopback device?
You should know that I just installed this app and it worked fine.
I first ran into this problem on the physical media. I have verified that H: in winecfg is path: /mnt/cdrom, type: CD-ROM, and when Pirates disk 1 is in uses label: Disc 1, Serial: D11D6EB3.
For regression testing purposes I dd'd the iso and created a loopback device. It is owned by my user, and is also set up properly in winecfg.
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #25 from James Hawkins truiken@gmail.com 2008-02-17 11:51:45 --- How are you running the installer (complete command line, current working directory)?
http://bugs.winehq.org/show_bug.cgi?id=11537
--- Comment #26 from James Hawkins truiken@gmail.com 2008-02-17 13:17:57 --- You say the CD device is set up as H: in winecfg, yet your log says it's looking for the cab at "E:\mnt\pirates1\Language.cab". That means there's something invalid with your configuration or you're not running the executable correctly (PWD).
http://bugs.winehq.org/show_bug.cgi?id=11537
Stephen E. Baker cycoone@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID
--- Comment #27 from Stephen E. Baker cycoone@hotmail.com 2008-02-17 15:54:51 --- Installing from the cdrom (./wine /mnt/cdrom/setup.exe) mentions looking for H:\Language.cab and still gives the 1603. However, when I moved my .wine out of the way to use a fresh configuration the install worked fine. I'm not sure what's going on in the old configuration, but I assume the reason it only appears broken after 0.9.49 is the tighter (but valid) conditions on swapping media. I'll mark this as invalid. (sorry about wasting everyone's time)
http://bugs.winehq.org/show_bug.cgi?id=11537
James Hawkins truiken@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #28 from James Hawkins truiken@gmail.com 2008-02-17 17:43:43 --- Closing invalid.