http://bugs.winehq.org/show_bug.cgi?id=25963
Summary: Dead Space 2 dvd installer fails to switch discs Product: Wine Version: 1.3.12 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
The first disc starts installing nicely, but installation aborts after a few minutes. This happens regardless of whether you use physical discs or just mount iso's.
Here's a bit of +msi, suitably trimmed: trace:msi:msi_get_property returning L"I:\" for property L"SourceDir" trace:msi:resolve_file_source Working to resolve source of file L"DS2DAT4_DAT" trace:msi:resolve_folder Working to resolve L"INSTALLLOCATION" trace:msi:resolve_folder (source)already resolved to L"I:\" trace:msi:resolve_file_source file L"DS2DAT4_DAT" source resolves to L"I:\DS2DAT4.DAT" trace:msi:ACTION_InstallFiles copying L"I:\DS2DAT4.DAT" to L"C:\Program Files\EA Games\Dead Space 2\DS2DAT4.DAT" ... err:msi:ACTION_InstallFiles Failed to copy L"I:\DS2DAT4.DAT" to L"C:\Program Files\EA Games\Dead Space 2\DS2DAT4.DAT" (2) err:msi:ITERATE_Actions Execution halted, action L"InstallFiles" returned 1603
ds2dat4.dat is on the second disc. Dunno why it didn't try to change discs...?
http://bugs.winehq.org/show_bug.cgi?id=25963
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Installer
http://bugs.winehq.org/show_bug.cgi?id=25963
--- Comment #1 from Dan Kegel dank@kegel.com 2011-02-02 09:10:06 CST --- Copying contents of both discs to a directory on hard drive lets you work around this, and the installer then reports success.
http://bugs.winehq.org/show_bug.cgi?id=25963
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |focht@gmx.net Component|-unknown |msi
--- Comment #2 from Anastasius Focht focht@gmx.net 2011-10-14 16:18:52 CDT --- Hello,
--- snip ---
0026:Call KERNEL32.CreateProcessW(00000000,0033d618 L"msiexec.exe /i "D:\autorun.dat" TRANSFORMS=:en-us.mst",00000000,00000000,00000000,00000000,00000000,00000000,0033d5d4,0033d5c4) ret=0040fdd2 0026:Ret KERNEL32.CreateProcessW() retval=00000001 ret=0040fdd2 --- snip ---
Not sure why the transform command line parameter for english is explicitly given, its the default and data is embedded in package. Maybe they wanted multi-language MSI package one day and prepared for that.
The boostrapper has to decide which language the installer package should use. For example if german was decided, the parameter "TRANSFORMS=:de.mst" would be passed to msiexec, which directs it to apply the embedded transform named "de.mst"before running the package.
Anyway ... dumping "autorun.dat" with Orca:
"Component" table:
--- snip ---
Group0 {89D09903-93C2-45A4-9D70-D4D7444AA412} INSTALLLOCATION 0 MAINENTRYPOINTFILEID
Group1 {95CC93FF-F788-498B-8776-BF7CB0D61151} INSTALLLOCATION 0 DS2DAT4_DAT
--- snip ---
"File" table:
--- snip ---
DS2DAT0_DAT Group0 DS2DAT0.DAT 2146199456 8704 5
...
MAINENTRYPOINTFILEID Group0 0zascoph.exe|deadspace2.exe 63504024 1.0.0.0 1033 8704 10
...
SupportEADMEadm_installer_exe SupportEADMEADM arfyp7im.exe|eadm-installer.exe 19086936 7.1.3.3 1033 8705 1322
DS2DAT4_DAT Group1 DS2DAT4.DAT 1653587968 8704 1323
DS2DAT5_DAT Group1 DS2DAT5.DAT 1733548032 8704 1324
moviesEnBloopers_vp6 moviesEnMoviesEn bloopers.vp6 200324 8704 1325
--- snip ---
"Media" table:
--- snip ---
DiskId LastSequence DiskPrompt Cabinet VolumeLabel Source
i2 i4 L64 S255 S32 S72
1 0 Disc1
2 10 Disc1
3 11 Disc1
4 12 Disc1
5 0 Disc1
6 0 Disc1
7 0 Disc1
8 0 Disc1
9 13 Disc1
10 1321 Disc1
11 1322 Disc1
12 0 Disc1
13 0 Disc1
14 1324 Disc2
15 1386 Disc2
16 1448 Disc2
--- snip ---
The file in question "DS2DAT4_DAT" has sequence id 1323. The highest LastSequence id for "Disc1" is 1322.
File "DS2DAT5.DAT" with sequence id 1324 which is also located on CD2 is referenced as LastSequence id in DiskId 14.
MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370558.aspx
--- quote --- For example, suppose a file has a sequence number of 92 entered in the Sequence column of the File table. To determine on which source disk this file resides, the installer checks the record of the Media table for the entry with the smallest LastSequence value that is larger than 92. The DiskId column is the primary key for the Media table and this field uniquely identifies the disk in the table. --- quote ---
1323 -> 1324 -> Disc2
Regards
http://bugs.winehq.org/show_bug.cgi?id=25963
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Dead Space 2 dvd installer |Dead Space 2 dvd installer |fails to switch discs |fails to switch discs (no | |ready_media/msi_change_medi | |a for normal files)
--- Comment #3 from Anastasius Focht focht@gmx.net 2011-10-15 07:35:03 CDT --- Hello,
looking at the bug again, the sequence handling is fine. The problem is actually ACTION_InstallFiles() -> ready_media().
ACTION_InstallFiles:
http://source.winehq.org/git/wine.git/blob/cda63b8a3820de7864c663ab79d47c431...
ready_media:
http://source.winehq.org/git/wine.git/blob/7b7c95425a8d23ca0a30756017018aca3...
ready_media() doesn't do anything if the source file is a _normal_ file.
They put several large files "DS2DATx.DAT" on DVD1 and DVD2 to be simply copied to target folder.
I refactored the code to allow volume id/media change detection also for normal files and it helped. The installer asked for second DVD and completed successfully.
Regards
http://bugs.winehq.org/show_bug.cgi?id=25963
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW CC| |nerv@dawncrow.de
--- Comment #4 from André H. nerv@dawncrow.de 2011-11-22 13:55:22 CST --- fixing status, i doubt that should be assigned to AF
http://bugs.winehq.org/show_bug.cgi?id=25963
--- Comment #5 from Hans Leidekker hans@meelstraat.net 2011-12-02 06:58:06 CST --- Created attachment 37743 --> http://bugs.winehq.org/attachment.cgi?id=37743 ~/msi_fix_changing_media_for_normal_files.
http://bugs.winehq.org/show_bug.cgi?id=25963
--- Comment #6 from Hans Leidekker hans@meelstraat.net 2011-12-02 06:58:55 CST --- Please try this patch.
http://bugs.winehq.org/show_bug.cgi?id=25963
--- Comment #7 from Austin English austinenglish@gmail.com 2011-12-23 15:08:10 CST --- http://source.winehq.org/git/wine.git/commitdiff/ad4f747fa68fe185854e6fbbc6f...
http://bugs.winehq.org/show_bug.cgi?id=25963
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |ad4f747fa68fe185854e6fbbc6f | |0fec62e762e06 Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #8 from Anastasius Focht focht@gmx.net 2011-12-27 06:50:32 CST --- Hello,
yes it helped - partially. At least a dialog indicating the disk change is now shown. So this part of bug is fixed.
Unfortunately the overall installer is still not fixed - that deserves a new bug.
--- snip --- 0031:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 200 L"File: DS2DAT4.DAT, Directory: INSTALLLOCATION, Size: 1653587968" ... 0031:trace:msi:msi_get_property returning L"D:\" for property L"SourceDir" 0031:Call shlwapi.PathStripToRootW(0033f0f4 L"D:\") ret=683cc13b 0031:Ret shlwapi.PathStripToRootW() retval=00000001 ret=683cc13b 0031:Call shlwapi.PathAddBackslashW(0033f0f4 L"D:\") ret=683cc14c 0031:Ret shlwapi.PathAddBackslashW() retval=0033f0fa ret=683cc14c 0031:Call KERNEL32.GetVolumeInformationW(0033f0f4 L"D:\",0033f2fe,00000105,00000000,00000000,00000000,00000000,00000000) ret=683cc197 0031:Ret KERNEL32.GetVolumeInformationW() retval=00000001 ret=683cc197 ... 0031:trace:msi:MSI_DatabaseOpenViewW L"SELECT `Message` FROM `Error` WHERE `Error` = 1302" 0x33f478 ... 0031:trace:msi:MSI_DatabaseOpenViewW L"UPDATE `Control` SET `Text` = 'Please insert Dead Space\2122 2: Disc2' WHERE `Dialog_` = 'ErrorDlg' AND `Control` = 'ErrorText'" 0x33f038 ... 0031:Call user32.CreateWindowExW(00000000,68421f60 L"MsiDialogCloseClass",007ddeac L"ErrorDlg",10000000,80000000,80000000,80000000,80000000,00000000,00000000,00000000,007dde68) ret=683bc13c ... 0031:Call user32.CreateWindowExW(00000000,68421fce L"BUTTON",007de9a8 L"&No",50010000,000000c8,0000006b,0000004b,00000017,000300e6,00000000,00000000,00000000) ret=683b3222 ... 0031:Ret user32.CreateWindowExW() retval=000200f4 ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"&No" hwnd 0x200f4 ... 0031:Call user32.CreateWindowExW(00000000,68421fce L"BUTTON",007deb70 L"&Yes",50010000,000000c8,0000006b,0000004b,00000017,000300e6,00000000,00000000,00000000) ret=683b3222 ... 0031:Ret user32.CreateWindowExW() retval=000200f0 ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"&Yes" hwnd 0x200f0 ... 0031:trace:msi:msi_dialog_add_control L"Static", L"ErrorText", 00000003, L"Please insert Dead Space\2122 2: Disc2", 00020000 ... 0031:Ret user32.CreateWindowExW() retval=000200ee ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"Please insert Dead Space\2122 2: Disc2" hwnd 0x200ee ... 0031:Call user32.CreateWindowExW(00000000,68421fce L"BUTTON",007deff8 L"Cancel",50010000,000000c8,0000006b,0000004b,00000017,000300e6,00000000,00000000,00000000) ret=683b3222 ... 0031:Ret user32.CreateWindowExW() retval=000200ea ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"Cancel" hwnd 0x200ea ... 0031:Call user32.CreateWindowExW(00000000,68421fce L"BUTTON",007df3d8 L"&Ignore",50010000,000000c8,0000006b,0000004b,00000017,000300e6,00000000,00000000,00000000) ret=683b3222 ... 0031:Ret user32.CreateWindowExW() retval=000200d6 ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"&Ignore" hwnd 0x200d6 ... 0031:Call user32.CreateWindowExW(00000000,68421fce L"BUTTON",007df6c8 L"OK",50010000,000000c8,0000006b,0000004b,00000017,000300e6,00000000,00000000,00000000) ret=683b3222 ... 0031:Ret user32.CreateWindowExW() retval=000200e4 ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"OK" hwnd 0x200e4 ... 0031:Call user32.CreateWindowExW(00000000,68421fce L"BUTTON",007dfba8 L"&Retry",50010000,000000c8,0000006b,0000004b,00000017,000300e6,00000000,00000000,00000000) ret=683b3222 ... 0031:Ret user32.CreateWindowExW() retval=000200e2 ret=683b3222 0031:trace:msi:msi_dialog_create_window Dialog L"ErrorDlg" control L"&Retry" hwnd 0x200e2 ... 0031:Call window proc 0x6879aec7 (hwnd=0x200f4,msg=WM_LBUTTONUP,wp=00000000,lp=00090042) ... 0031:trace:msi:msi_dialog_oncommand 0x7dde68 0x200f4 00000000 ... 0031:trace:msi:MSI_EvaluateConditionW 1 <- L"1" 0031:trace:msi:msi_dialog_send_event Sending control event L"EndDialog" L"ErrorNo" ... 0031:trace:msi:msi_set_property 0x146750 L"MSIErrorDialogResult" L"ErrorAbort" ... 0031:trace:msi:msi_dialog_end_dialog 0x7dde68 ... 0031:err:msi:ACTION_InstallFiles Failed to ready media for L"DS2DAT4_DAT" ... 0031:trace:msi:MSI_ProcessMessage (nil) (nil) (nil) 0 10 L"Action ended 13:01:29: InstallFiles. Return value 1627." ... --- snip ---
For next bug:
The disk change dialog is somehow borked.
It seems all buttons created as child below dialog parent are overlaying each other (same rectangle -> x,y,w,h). The last button "retry" text is shown.
When you move the main installer main window over the disk change dialog, the button text cycles through all buttons text (each control is updated once).
Moving foreign windows over the dialog will cause the "no" button to be active. Clicking the button will always use first button control, which is unfortunately "No", hence the installer aborts.
Regards
http://bugs.winehq.org/show_bug.cgi?id=25963
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #9 from Alexandre Julliard julliard@winehq.org 2011-12-30 12:57:10 CST --- Closing bugs fixed in 1.3.36.