http://bugs.winehq.org/show_bug.cgi?id=24611
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #14 from Anastasius Focht focht@gmx.net 2012-04-22 15:31:23 CDT --- Hello,
confirming. The problem seems to be missing typelib/interface data in 64 bits registry. The installer itself is 32 bits but the out-of-process COM server runs as 64 bit process and they talk to each other using standard marshaller.
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files (x86)/Common Files/InstallShield/Professional/RunTime ... $ ls -l total 204 drwxrwxr-x. 3 focht focht 4096 Apr 4 22:56 11 -rw-rw-r--. 1 focht focht 38719 Feb 7 2006 iKernel.rgs -rw-rw-r--. 1 focht focht 570 Dec 19 2005 ISBEW64.rgs -rw-rw-r--. 1 focht focht 3368 Nov 13 2005 ISBEW64.tlb -rw-rw-r--. 1 focht focht 121032 Nov 13 2005 IsProBE.tlb -rw-rw-r--. 1 focht focht 32768 Feb 7 2006 Objectps.dll ... --- snip ---
ISBEW64.rgs:
--- snip --- HKCR { NoRemove Interface { {7871BFAD-DAD5-402F-9007-2593E9A07532} = s 'IISBEW64Utils' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}' { val Version = s '1.0' } } } NoRemove TypeLib { {DE7D81D8-FD4A-456B-9A5E-6CED95B57D91} { 1.0 = s 'ISENG64Lib' { 0 { win32 = s '%MODULEPATH%\ISBEW64.tlb' } FLAGS = s '0' HELPDIR = s '%MODULEPATH%' } } } } --- snip ---
Registration of typelib(s):
--- snip --- 0024:Starting process L"Z:\home\focht\Downloads\titan\setup.exe" (entryproc=0x40ce22) ... 0024:Call KERNEL32.CreateProcessA(00000000,0041f1b0 "Z:\home\focht\Downloads\titan\setup.exe -deleter ",00000000,00000000,00000000,00000000,00000000,00000000,0032f108,0032f174) ret=00407a73 ... 0026:Call KERNEL32.__wine_kernel_init() ret=7bc530d2 0024:Ret KERNEL32.CreateProcessA() retval=00000001 ret=00407a73 ... 0026:Call oleaut32.RegisterTypeLib(00157308,00156a5c L"C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\ISBEW64.tlb",00000000) ret=1001aec9 ... 0026:Call advapi32.RegCreateKeyExW(80000000,0033d9d0 L"Typelib\{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0",00000000,00000000,00000000,00020006,00000000,0033d9ac,00000000) ret=7e47b1d0 0026:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=7e47b1d0 ... 0026:Call advapi32.RegCreateKeyExW(80000000,0033d9d0 L"Interface\{7871BFAD-DAD5-402F-9007-2593E9A07532}",00000000,00000000,00000000,00020006,00000000,0033d9ac,00000000) ret=7e47bb8f 0026:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=7e47bb8f ... 0026:Ret oleaut32.RegisterTypeLib() retval=00000000 ret=1001aec9 ... --- snip ---
The type library got registered in 32 bits part (wine64 regedit):
--- snip --- REGEDIT4
[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}]
[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0] @="ISENG64Lib"
[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\0]
[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\0\win32] @="C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\ISBEW64.tlb"
[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\FLAGS] @="0"
[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\HELPDIR] @="C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime" --- snip ---
--- snip --- REGEDIT4
[HKEY_CLASSES_ROOT\Wow6432Node\Interface{7871BFAD-DAD5-402F-9007-2593E9A07532}] @="IISBEW64Utils"
[HKEY_CLASSES_ROOT\Wow6432Node\Interface{7871BFAD-DAD5-402F-9007-2593E9A07532}\ProxyStubClsid] @="{00020424-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Wow6432Node\Interface{7871BFAD-DAD5-402F-9007-2593E9A07532}\ProxyStubClsid32] @="{00020424-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Wow6432Node\Interface{7871BFAD-DAD5-402F-9007-2593E9A07532}\TypeLib] @="{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}" "Version"="1.0" --- snip ---
64-bits registry for "TypeLib":
--- snip --- REGEDIT4
[HKEY_CLASSES_ROOT\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}]
[HKEY_CLASSES_ROOT\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0] @="ISENG64Lib"
[HKEY_CLASSES_ROOT\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\0]
[HKEY_CLASSES_ROOT\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\0\win32] @="C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\ISBEW64.tlb"
[HKEY_CLASSES_ROOT\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\FLAGS] @="0"
[HKEY_CLASSES_ROOT\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\HELPDIR] @="C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime" --- snip ---
64-bits registry for "Interface": key not present
The 64-bit InstallShield engine trying to find typelib data for creating proxy:
--- snip --- 0026:Call KERNEL32.CreateProcessA(00000000,0033d28c "C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\11\50\Intel32\ISBEW64.exe {DD19BC0E-827B-48CE-9D16-F7917E8B486C}:{9EF36F7A-EF7B-4BC6-92C4-F5B242B7CF88}",00000000,00000000,00000000,00000000,00000000,00000000,0033d68c,0033d6e0) ret=00913327 ... 0029:Call KERNEL32.__wine_kernel_init() ret=7f4ffe6d163e 0026:Ret KERNEL32.CreateProcessA() retval=00000001 ret=00913327 ... 0029:trace:ole:CoGetPSClsid () riid={7871bfad-dad5-402f-9007-2593e9a07532}, pclsid=0x23e010 0029:Call advapi32.RegOpenKeyExW(ffffffff80000000,0023de30 L"Interface\{7871BFAD-DAD5-402F-9007-2593E9A07532}\ProxyStubClsid32",00000000,00020019,0023ddd0) ret=7f4ff67185f2 003c:Ret user32.PostMessageW() retval=00000001 ret=7f4ff6768944 003c:Call KERNEL32.WaitForSingleObject(00000070,ffffffff) ret=7f4ff6768960 0029:Ret advapi32.RegOpenKeyExW() retval=00000002 ret=7f4ff67185f2 0029:warn:ole:CoGetPSClsid No PSFactoryBuffer object is registered for IID {7871bfad-dad5-402f-9007-2593e9a07532} 0029:err:ole:marshal_object couldn't get IPSFactory buffer for interface {7871bfad-dad5-402f-9007-2593e9a07532} ... --- snip ---
If I manually import/add "{7871BFAD-DAD5-402F-9007-2593E9A07532}" interface from 32 to 64 bit registry:
--- snip --- 0029:trace:ole:CoGetPSClsid () riid={7871bfad-dad5-402f-9007-2593e9a07532}, pclsid=0x23e010 0029:Call advapi32.RegOpenKeyExW(ffffffff80000000,0023de30 L"Interface\{7871BFAD-DAD5-402F-9007-2593E9A07532}\ProxyStubClsid32",00000000,00020019,0023ddd0) ret=7fe23126c5f2 ... 0029:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7fe23126c5f2 ... 0029:trace:ole:CoGetPSClsid () Returning CLSID={00020424-0000-0000-c000-000000000046} 0029:trace:ole:CoGetClassObject CLSID: {00020424-0000-0000-c000-000000000046},IID: {d5f569d0-593b-101a-b569-08002b2dbf7a} ... 0029:Call advapi32.RegOpenKeyExW(ffffffff80000000,0023ddb0 L"CLSID\{00020424-0000-0000-C000-000000000046}",00000000,00020019,0023dda8) ret=7fe23126bbe5 ... 0029:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7fe23126bbe5 ... 0029:trace:ole:PSFacBuf_CreateStub ({7871bfad-dad5-402f-9007-2593e9a07532},0x2c4540,0x23e0a0) 0029:Call advapi32.RegOpenKeyA(ffffffff80000000,0023db40 "Interface\{7871bfad-dad5-402f-9007-2593e9a07532}\Typelib",0023de68) ret=7fe230c41fc5 0029:Ret advapi32.RegOpenKeyA() retval=00000000 ret=7fe230c41fc5 0029:Call advapi32.RegQueryValueExA(00000074,00000000,00000000,0023d7a4,0023dda0,0023d7ac) ret=7fe230c4206a 0029:Ret advapi32.RegQueryValueExA() retval=00000000 ret=7fe230c4206a 0029:Call advapi32.RegQueryValueExA(00000074,7fe230d31bb5 "Version",00000000,0023d7a4,0023dad0,0023d7a8) ret=7fe230c42116 0029:Ret advapi32.RegQueryValueExA() retval=00000000 ret=7fe230c42116 0029:Call advapi32.RegCloseKey(00000074) ret=7fe230c42189 0029:Ret advapi32.RegCloseKey() retval=00000000 ret=7fe230c42189 0029:Call advapi32.RegQueryValueA(ffffffff80000000,0023dc70 "Typelib\{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\0\win64",0023d9c0,0023d7a0) ret=7fe230c421ec 0029:Ret advapi32.RegQueryValueA() retval=00000002 ret=7fe230c421ec 0029:err:ole:_get_typeinfo_for_iid Could not get typelib fn? 0029:err:ole:PSFacBuf_CreateStub No typeinfo for {7871bfad-dad5-402f-9007-2593e9a07532}? 0029:err:ole:marshal_object Failed to create an IRpcStubBuffer from IPSFactory for {7871bfad-dad5-402f-9007-2593e9a07532} with error 0x80004005 ... --- snip ---
It wants the "win64" key. Adding it manually:
--- snip --- REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Classes\Typelib{DE7D81D8-FD4A-456B-9A5E-6CED95B57D91}\1.0\0\win64] @="C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\ISBEW64.tlb" --- snip ---
Now the proxy gets created and both - the 32 bit setup and the 64 bit installer engine can talk to each other. The demo installs successfully.
The "TypeLib" data is synchronized between the 64-bit and 32-bit views of the registry. "Interface" not.
Regards