[Bug 24611] Install Shield fails on 64bit multilib wine if WINEPREFIX was created by 64bit wine
wine-bugs at winehq.org
wine-bugs at winehq.org
Sun Apr 22 15:31:23 CDT 2012
http://bugs.winehq.org/show_bug.cgi?id=24611
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |focht at gmx.net
--- Comment #14 from Anastasius Focht <focht at 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
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list