http://bugs.winehq.org/show_bug.cgi?id=33000
Bug #: 33000 Summary: Sim Theme Park fails to install/copy SafeDisc v1.x driver to system32\drivers Product: Wine Version: 1.5.24 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello folks,
a guy on IRC #winehq asked for help to get "Sim Theme Park" to work. The game is copy-protected and the installer seems somehow fail to installer the SafeDisc 1.x driver properly in system32/drivers folder.
Manually copying the driver after installation lets the game recognize the original disc (for that SafeDisc 1.x has to be run in Win2K mode, see bug 12653) -> workaround.
The installer is Installshield based (year 2000).
+tid,+seh,+relay gives:
--- snip --- 0024:Call KERNEL32.CreateProcessW(00000000,0032e398 L"E:\USEnglish\Setup\SETUP.EXE",00000000,00000000,00000000,00000400,00000000,001a7690 L"E:\USEnglish\Setup\",0032da40,0032da30) ret=7e51f1c3 0026:trace:relay:load_list L"RelayExclude" = L"ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.48;kernel32.49;kernel32.94;kernel32.95;kernel32.96;kernel32.97;kernel32.98;kernel32.TlsGetValue;kernel32.TlsSetValue;kernel32.FlsGetValue;kernel32.FlsSetValue;kernel32.SetLastError" 0026:trace:relay:load_list L"RelayFromExclude" = L"winex11.drv;user32;gdi32;advapi32;kernel32" 0026:Call KERNEL32.__wine_kernel_init() ret=7bc54420 0024:Ret KERNEL32.CreateProcessW() retval=00000001 ret=7e51f1c3 ... 0028:Call KERNEL32.CreateProcessA(00000000,0015a7d0 "C:\users\focht\Temp\_INS5176._MP",00000000,00000000,00000000,00000000,00000000,00000000,0081e024,0081e068) ret=f6edb8d0 002a:trace:relay:load_list L"RelayExclude" = L"ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.48;kernel32.49;kernel32.94;kernel32.95;kernel32.96;kernel32.97;kernel32.98;kernel32.TlsGetValue;kernel32.TlsSetValue;kernel32.FlsGetValue;kernel32.FlsSetValue;kernel32.SetLastError" 002a:trace:relay:load_list L"RelayFromExclude" = L"winex11.drv;user32;gdi32;advapi32;kernel32" 002a:Call KERNEL32.__wine_kernel_init() ret=7bc54420 0028:Ret KERNEL32.CreateProcessA() retval=00000001 ret=f6edb8d0 ...
002a:Call KERNEL32.lstrcmpA(0033f098 "SdSelectFolder",0153f897 "SdSelectFolder") ret=0040fbc8 002a:Ret KERNEL32.lstrcmpA() retval=00000000 ret=0040fbc8 ... 002a:Call KERNEL32.lstrcmpiA(0033f498 "Edit",00480738 "Static") ret=0040e9cb 002a:Ret KERNEL32.lstrcmpiA() retval=ffffffff ret=0040e9cb 002a:Call user32.SetWindowTextA(000200fc,0033f8a8 "SimTheme Park") ret=0040e9ff ... 002a:Call KERNEL32.lstrcpyA(0033fb74,001bf1ca "C:\Program Files\SimTheme Park") ret=00439e6d 002a:Ret KERNEL32.lstrcpyA() retval=0033fb74 ret=00439e6d ... 002a:Call KERNEL32.LoadLibraryA(0033f254 "C:\Program Files\SimTheme Park\drvmgt.dll") ret=0041f8d6 002a:Call PE DLL (proc=0x19023b0,module=0x1900000 L"drvmgt.dll",reason=PROCESS_ATTACH,res=(nil)) ... 002a:Call KERNEL32.GetProcAddress(01900000,001788be "Setup") ret=00455b5f 002a:Ret KERNEL32.GetProcAddress() retval=019013d0 ret=00455b5f ... 002a:Call KERNEL32.CreateFileA(0033f690 "\\.\Secdrv",c0000000,00000003,00000000,00000003,00000080,00000000) ret=0190107b 002a:Ret KERNEL32.CreateFileA() retval=ffffffff ret=0190107b ... 002a:Call advapi32.CreateServiceA(0156fae8,01906038 "Secdrv",01906038 "Secdrv",000f01ff,00000001,00000003,00000001,0033f688 "C:\windows\system32\drivers\\SECDRV.SYS",00000000,00000000,00000000,00000000,00000000) ret=01901b35 ... 002a:Ret advapi32.CreateServiceA() retval=0156fd30 ret=01901b35 ... 002a:fixme:service:SetServiceObjectSecurity 0x156fd30 4 0x33f274 002a:Ret advapi32.SetServiceObjectSecurity() retval=00000001 ret=01901a5f 002a:Call KERNEL32.GetSystemDirectoryA(0033f370,00000100) ret=019017b8 002a:Ret KERNEL32.GetSystemDirectoryA() retval=00000013 ret=019017b8 002a:Call KERNEL32.lstrlenA(0033f370 "C:\windows\system32") ret=019017cf 002a:Ret KERNEL32.lstrlenA() retval=00000013 ret=019017cf 002a:Call KERNEL32.lstrlenA(0033f370 "C:\windows\system32\drivers\") ret=019017f0 002a:Ret KERNEL32.lstrlenA() retval=0000001c ret=019017f0 002a:Call KERNEL32.GetFileAttributesA(0033f370 "C:\windows\system32\drivers\\SECDRV.SYS") ret=01901fdc 002a:Ret KERNEL32.GetFileAttributesA() retval=ffffffff ret=01901fdc ... 002a:Call KERNEL32.CopyFileA(0033f570 "C:\Program Files\SECDRV.SYS",0033f370 "C:\windows\system32\drivers\\SECDRV.SYS",00000000) ret=0190187b 002a:Ret KERNEL32.CopyFileA() retval=00000000 ret=0190187b 002a:Call KERNEL32.GetLastError() ret=01901885 002a:Ret KERNEL32.GetLastError() retval=00000002 ret=01901885 ... --- snip ---
It looks like the path passed to drvmgt.dll "Setup" API function (first argument) needs to have a backslash appended. Somewhere in installshield script this path is constructed, most likely at the point of "SdSelectFolder" (Installshield folder selection). To properly analyze this, the installshield script needs to be decrypted/decompiled... low priority.
Regards
https://bugs.winehq.org/show_bug.cgi?id=33000
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Installer, obfuscation Status|NEW |RESOLVED Resolution|--- |INVALID Summary|Sim Theme Park fails to |Sim Theme Park fails to |install/copy SafeDisc v1.x |install/copy SafeDisc v1.x |driver to system32\drivers |driver to system32\drivers | |(broken pre-Win2K era | |installer)
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
I had another look at this and came to conclusion that the SafeDisc 1.x driver installation part is definitely broken for modern Windows 2000/XP+ systems.
Unfortunately the InstallShield engine script 'setup.ins' is pretty old (Win9X era) and can't be cleanly decompiled. Some function argument types and opcodes are not supported by ISDCC 2.x/ISD 1.x and I don't want to spend more time on this, hacking the decompilers.
I found a workaround though. In the 'Select Components' dialog, click 'browse' button and append two(!) backslashes to the default installation path.
This will later result in 'C:\Program Files\SimTheme Park\' path which gets passed to 'drvmgt.dll!Setup' function, allowing to construct a proper copy path.
Even if the driver is installed, this won't work anyway on Windows XP+ due to bug 21147 (by design).
Resolving 'invalid' since the installer is broken and unlikely to work on modern Windows OS (unless someone proves otherwise).
Regards
https://bugs.winehq.org/show_bug.cgi?id=33000
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #2 from Austin English austinenglish@gmail.com --- Closing.
https://bugs.winehq.org/show_bug.cgi?id=33000
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hededrk@gmail.com
--- Comment #3 from Gijs Vermeulen gijsvrm@gmail.com --- *** Bug 37802 has been marked as a duplicate of this bug. ***