We already have a working installer build machine running on a 32-bit Windows Server 2008 virtual machine. However, we've been doing work to move to a 64-bit Windows Server 2008 R2 virtual machine. One of the things I've noticed is that on the 64-bit environment, not all COM information is extracted correctly during the build process. The differences are listed below, as extracted using RegSpyUI.exe:
On a 32-bit machine the RegSpyUI.exe extract is:
[HKEY_CLASSES_ROOT\Interface\{01BAC8E0-76B1-4538-8BF5-C822BD3238F2}\ProxyStubClsid]
@="{00020424-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Interface\{01BAC8E0-76B1-4538-8BF5-C822BD3238F2}\ProxyStubClsid32]
@="{00020424-0000-0000-C000-000000000046}"
Yet, on the 64-bit machine the corresponding extract is:
[HKEY_CLASSES_ROOT\Interface\{01BAC8E0-76B1-4538-8BF5-C822BD3238F2}\ProxyStubClsid32]
@="{F0B85304-34DA-49C4-BE3F-8FEECDE503F7}"
I'm not worried about the ProxyStubClsid not being generated, I believe this is correct. The thing that's weird is that on the 64-bit machine the ProxyStubClsid32 points to {F0B85304-34DA-49C4-BE3F-8FEECDE503F7}, which is PSFactoryBuffer. Where as on the 32-bit machine ProxyStubClsid32 points to {00020424-0000-0000-C000-000000000046}, which is C:\Windows\system32\oleaut32.dll. The 32-bit machine's behaviour is what we want.
Has anyone else experienced a similar issue or have any ideas on how I could investigate further.
Additional information:
On a 32-bit machine the RegSpyUI.exe extract is:
[HKEY_CLASSES_ROOT\Interface\{01BAC8E0-76B1-4538-8BF5-C822BD3238F2}\ProxyStubClsid]
@="{00020424-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\Interface\{01BAC8E0-76B1-4538-8BF5-C822BD3238F2}\ProxyStubClsid32]
@="{00020424-0000-0000-C000-000000000046}"
Yet, on the 64-bit machine the corresponding extract is:
[HKEY_CLASSES_ROOT\Interface\{01BAC8E0-76B1-4538-8BF5-C822BD3238F2}\ProxyStubClsid32]
@="{F0B85304-34DA-49C4-BE3F-8FEECDE503F7}"
I'm not worried about the ProxyStubClsid not being generated, I believe this is correct. The thing that's weird is that on the 64-bit machine the ProxyStubClsid32 points to {F0B85304-34DA-49C4-BE3F-8FEECDE503F7}, which is PSFactoryBuffer. Where as on the 32-bit machine ProxyStubClsid32 points to {00020424-0000-0000-C000-000000000046}, which is C:\Windows\system32\oleaut32.dll. The 32-bit machine's behaviour is what we want.
Has anyone else experienced a similar issue or have any ideas on how I could investigate further.
Additional information:
- COM Extract at Build is set to Yes
- Running regsvr32 on both 32-bit and 64-bit machines does register the DLL correctly (i.e. ProxyStubClsid[32] points to {00020424-0000-0000-C000-000000000046}