http://bugs.winehq.org/show_bug.cgi?id=30912
Bug #: 30912 Summary: [Prince Of Persia : The Forgotten Sand]Does not work in 64Bits Prefix Product: Wine Version: 1.5.6 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: berillions@gmail.com Classification: Unclassified
Created attachment 40546 --> http://bugs.winehq.org/attachment.cgi?id=40546 Output console without UGL Message
I tried to play at this game in my 32Bits prefix and my 64Bits prefix.
In my 32Bits prefix, there aren't problems, the game works correctly. No need to install applications with winetricks.
In my 64Bits prefix, it's impossible to play. The Ubisoft Game Launcher works great but wine crash when the UGL launch the game. PoP TFS uses the same Ubisoft DRM than Assassin's Creed II/Brotherhood/Revelations and these games work without problems in the 64Bits prefix.
http://bugs.winehq.org/show_bug.cgi?id=30912
Berillions berillions@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #40546|application/octet-stream |text/plain mime type| |
http://bugs.winehq.org/show_bug.cgi?id=30912
--- Comment #1 from Berillions berillions@gmail.com 2012-06-15 14:21:39 CDT --- Created attachment 40557 --> http://bugs.winehq.org/attachment.cgi?id=40557 The main cause of crash
I found where come from the bug. I compared the output console between the 32Bits Prefix and the 64Bits Prefix and i found this :
err:ole:CoGetClassObject class {4c9b6dde-6809-46e6-a278-9b6a97588670} not registered err:ole:CoGetClassObject no class object {4c9b6dde-6809-46e6-a278-9b6a97588670} could be created for context 0x1
In my 32Bits prefix, this class exist in Regedit but not in the 64Bits Prefix. There is a second class which does not exist in the 64Bits prefix so i import these class and the game works.
I attach the .reg file to show which data are not add in the register during the installatiin. So, for me there is a problem in 64Bits Wine when an installer must to add data in the register.
http://bugs.winehq.org/show_bug.cgi?id=30912
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |win64
http://bugs.winehq.org/show_bug.cgi?id=30912
GyB gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gyebro69@gmail.com
--- Comment #2 from GyB gyebro69@gmail.com 2012-08-05 10:03:20 CDT --- (In reply to comment #1)
Created attachment 40557 [details] The main cause of crash
I found where come from the bug. I compared the output console between the 32Bits Prefix and the 64Bits Prefix and i found this :
err:ole:CoGetClassObject class {4c9b6dde-6809-46e6-a278-9b6a97588670} not
registered err:ole:CoGetClassObject no class object {4c9b6dde-6809-46e6-a278-9b6a97588670} could be created for context 0x1
Have you tried 'winetricks xact_jun2010' yet? I'm on 32-bit (Fedora 17), and installing Xaudio2 libraries makes the crash go away here.
http://bugs.winehq.org/show_bug.cgi?id=30912
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |focht@gmx.net Resolution| |INVALID Summary|[Prince Of Persia : The |Prince Of Persia: The |Forgotten Sand]Does not |Forgotten Sand fails to run |work in 64Bits Prefix |in 64-bit WINEPREFIX | |(Microsoft XAudio2, part of | |DirectX must be installed | |with WinVer >= 2003 in | |64-bit prefixes)
--- Comment #3 from Anastasius Focht focht@gmx.net 2013-04-21 13:39:35 CDT --- Hello folks,
there is nothing wrong, it's by design (Microsoft) ;-)
The DirectX installer takes care for installing and registering 32-bit and 64-bit components in a shared WoW64 environment.
The 32-bit COM inproc servers are registered through the main installer (DllRegisterServer on each dll). Because the main installer is a 32-bit process all CLSID registry entries will be in correct 32-bit part of registry. All 64-bit COM inproc servers are registered through a 64-bit helper process (infinst.exe). This creates the data in the part of registry where they are seen by 64-bit processes (and not 32-bit - which wouldn't make sense anyway).
Microsoft imposed a restriction for XAudio2 on certain 64-bit Windows XP editions ("Windows XP Professional x64 Edition" vs. "Windows XP 64-Bit Edition", Version 2003). This means with Wine defaulting to plain "Windows XP" 64-bit all 32-bit XAudio2 inproc servers are installed/copied to %SystemRoot%\SysWOW64 (fs redirection) but are _not_ registered as inproc servers. The 64-bit counterparts are installed _and_ registered.
You can verify by examining "DirectX.log" which lives in "c:\windows\logs".
DX install log for 32-bit component "Aug2009_XAudio_x86.cab" in 64-bit WINEPREFIX:
--- snip --- ... 04/21/13 18:21:24: dxupdate: DirectXUpdateInstallPlugIn(): Installing Aug2009_XAudio_x86.cab... 04/21/13 18:21:24: dxupdate: DXCheckTrust(): Z:\home\focht\DOWN~NTG\dx\Aug2009_XAudio_x86.cab is trusted. 04/21/13 18:21:24: dxupdate: Extracted file C:\users\focht\Temp\DX28e1.tmp\AUG2009_XAudio_x86.inf from cab 04/21/13 18:21:24: dxupdate: DirectXUpdateGetSetupInformation(): DirectX Version: 4.09.00.0904.0 04/21/13 18:21:24: dxupdate: CheckDependency(): no dependency. 04/21/13 18:21:24: dxupdate: DirectXUpdateGetSetupInformation(): Section [4.09.00.0904.0-4.09.00.0904.0_WinXP@64] is being installed. 04/21/13 18:21:24: dxupdate: Extracted file C:\users\focht\Temp\DX28e1.tmp\XAudio2_5.dll from cab 04/21/13 18:21:24: dxupdate: Extracted file C:\users\focht\Temp\DX28e1.tmp\XAPOFX1_3.dll from cab 04/21/13 18:21:24: dxupdate: Extracted file C:\users\focht\Temp\DX28e1.tmp\XAudio2_5_x86.inf from cab 04/21/13 18:21:24: dxupdate: Extracted file C:\users\focht\Temp\DX28e1.tmp\XAudio2_5_x86.cat from cab 04/21/13 18:21:24: dxupdate: Extracted file C:\users\focht\Temp\DX28e1.tmp\XAudio2_5_x86_xp.inf from cab 04/21/13 18:21:24: dxupdate: Files: 5 04/21/13 18:21:24: dxupdate: Size: 21504 04/21/13 18:21:24: dxupdate: DirectXUpdateInstallPlugIn(): Installing: XAudio2_5_x86_xp.inf - [x64_Install] 04/21/13 18:21:24: dxupdate: Installed file C:\windows\SysWOW64\XAudio2_5.dll 04/21/13 18:21:24: dxupdate: Installed file C:\windows\SysWOW64\XAPOFX1_3.dll --- snip ---
DX install log for 32-bit component "Aug2009_XAudio_x86.cab" in 32-bit WINEPREFIX:
--- snip --- 04/21/13 18:24:30: dxupdate: DirectXUpdateInstallPlugIn(): Installing Aug2009_XAudio_x86.cab... 04/21/13 18:24:30: dxupdate: DXCheckTrust(): Z:\home\focht\DOWN~NTG\dx\Aug2009_XAudio_x86.cab is trusted. 04/21/13 18:24:30: dxupdate: Extracted file C:\windows\system32\DirectX\DXfdef.tmp\AUG2009_XAudio_x86.inf from cab 04/21/13 18:24:30: dxupdate: DirectXUpdateGetSetupInformation(): DirectX Version: 4.09.00.0904.0 04/21/13 18:24:30: dxupdate: CheckDependency(): no dependency. 04/21/13 18:24:30: dxupdate: DirectXUpdateGetSetupInformation(): Section [4.09.00.0904.0-4.09.00.0904.0_WinXP] is being installed. 04/21/13 18:24:30: dxupdate: Extracted file C:\windows\system32\DirectX\DXfdef.tmp\XAudio2_5.dll from cab 04/21/13 18:24:30: dxupdate: Extracted file C:\windows\system32\DirectX\DXfdef.tmp\XAPOFX1_3.dll from cab 04/21/13 18:24:30: dxupdate: Extracted file C:\windows\system32\DirectX\DXfdef.tmp\XAudio2_5_x86.inf from cab 04/21/13 18:24:30: dxupdate: Extracted file C:\windows\system32\DirectX\DXfdef.tmp\XAudio2_5_x86.cat from cab 04/21/13 18:24:30: dxupdate: Extracted file C:\windows\system32\DirectX\DXfdef.tmp\XAudio2_5_x86_xp.inf from cab 04/21/13 18:24:30: dxupdate: Files: 5 04/21/13 18:24:30: dxupdate: Size: 21504 04/21/13 18:24:30: dxupdate: DirectXUpdateInstallPlugIn(): Installing: XAudio2_5_x86_xp.inf - [x86_Install] 04/21/13 18:24:30: dxupdate: Installed file C:\windows\system32\XAudio2_5.dll 04/21/13 18:24:30: dxupdate: Installed file C:\windows\system32\XAPOFX1_3.dll 04/21/13 18:24:30: dxupdate: DirectXUpdateInstallPlugIn(): Registering: XAudio2_5_x86.inf - [DllRegisterServer] 04/21/13 18:24:30: dxupdate: RegisterDLL(): C:\windows\system32\XAudio2_5.dll is registered successfully. --- snip ---
Note the additional "DllRegisterServer" part.
64-bit components are omitted, they work as expected.
"XAudio2_5_x86_xp.inf":
--- snip --- [Version] Signature = "$Windows NT$" AdvancedINF = 2.0
[SourceDisksNames] 99 = %DiskName%,"AUG2009_XAudio2_5_x86.cab",0,,-1
[SourceDisksFiles] XAudio2_5.dll = 99 XAPOFX1_3.dll = 99
[DestinationDirs] DefaultDestDir = 11 DirectX_SysWOW64 = 10,SysWOW64
[x86_Install] CopyFiles = DirectX_System
[x64_Install] CopyFiles = DirectX_SysWOW64
[DirectX_System] XAudio2_5.dll XAPOFX1_3.dll
[DirectX_SysWOW64] XAudio2_5.dll XAPOFX1_3.dll
[DllRegisterServer] %11%\XAudio2_5.dll
[Strings] MSFT = "Microsoft" ExceptionClassDesc = "DirectX AUG2009 XAudio" DiskName = "DirectX AUG2009 XAudio cab" --- snip ---
Looks sane, "DllRegisterServer" section is present.
The solution lies in the parent "AUG2009_XAudio_x86.inf", responsible which child component .inf file sections are applied/executed.
--- snip --- ... ; ---- Windows XP ---- [4.09.00.0904.00-4.09.00.0904.00_WinXP] NumberOfFiles=5 Size=21 ;approximately total file size (Size * 1024 bytes) CopyCount=1 XAudio2_5_x86_xp.inf, x86_Install XAudio2_5_x86.inf, DllRegisterServer
; ---- Windows XP 64bit ---- [4.09.00.0904.00-4.09.00.0904.00_WinXP@64] NumberOfFiles=5 Size=21 ;approximately total file size (Size * 1024 bytes) CopyCount=1 XAudio2_5_x86_xp.inf, x64_Install ...
; ---- Windows Server 2003 ---- [4.09.00.0904.00-4.09.00.0904.00_Srv2K3] NumberOfFiles=5 Size=21 ;approximately total file size (Size * 1024 bytes) CopyCount=1 XAudio2_5_x86_xp.inf, x86_install XAudio2_5_x86.inf, DllRegisterServer
; ---- Windows Server 2003 64bit ---- [4.09.00.0904.00-4.09.00.0904.00_Srv2K3@64] NumberOfFiles=5 Size=21 ;approximately total file size (Size * 1024 bytes) CopyCount=1 XAudio2_5_x86_xp.inf, x64_install XAudio2_5_x86.inf, DllRegisterServer ... --- snip ---
Windows XP 64bit dubbed "WinXP@64" section has the "DllRegisterServer" section reference for "XAudio2_5_x86.inf" omitted. This results in 32-bit components "DllRegisterServer" sections not being executed in shared WoW64 environment.
Solution: set WinVer at least to "Windows 2003" before you are going to install DirectX/XAudio2 in a 64-bit WINEPREFIX. This will correctly install and register both, 32-bit and 64-bit XAudio2 dlls.
Resolving "invalid".
Regards
http://bugs.winehq.org/show_bug.cgi?id=30912
--- Comment #4 from Berillions berillions@gmail.com 2013-04-21 14:17:25 CDT --- Thanks for your explanations Anastasius but why this "problem" does not exist when i install and play at this game on a "real" Win7 ?
http://bugs.winehq.org/show_bug.cgi?id=30912
--- Comment #5 from Anastasius Focht focht@gmx.net 2013-04-21 14:34:00 CDT --- Hello Berillions,
--- quote --- Thanks for your explanations Anastasius but why this "problem" does not exist when i install and play at this game on a "real" Win7 ? --- quote ---
As I explained in my previous component... The restriction for XAudio2 is only on plain 64-bit Windows XP, everything higher (64-bit Windows 2003, Vista, Win7...) will have the 32-bit COM dlls registered in their WoW64 environment.
Regards
http://bugs.winehq.org/show_bug.cgi?id=30912
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #6 from Austin English austinenglish@gmail.com 2013-04-22 21:12:45 CDT --- Closing.
http://bugs.winehq.org/show_bug.cgi?id=30912
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tethys@gmail.com
--- Comment #7 from Anastasius Focht focht@gmx.net 2013-04-27 05:53:20 CDT --- *** Bug 16516 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=30912
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |msonders33@gmail.com
--- Comment #8 from Anastasius Focht focht@gmx.net 2013-04-27 06:07:40 CDT --- *** Bug 30552 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=30912
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dank@kegel.com
--- Comment #9 from Dan Kegel dank@kegel.com 2013-04-27 09:57:07 CDT --- Is this an argument for making Wine's default version win7?
https://bugs.winehq.org/show_bug.cgi?id=30912
Vincent Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd@gmail.com
--- Comment #10 from Vincent Povirk madewokherd@gmail.com --- *** Bug 31568 has been marked as a duplicate of this bug. ***