cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Dan_Peterson
Level 3

Failed to self register 64-bit COM components

I have 8 COM components that I'm trying to get to self register from an MSI created in InstallShield 2008 (I had hoped to use COM extraction, but that feature is not supported yet!?!?). I saw a post that said to use self register for 64-bit components instead.

5 of my COM components self register successfully and 3 fail. Those that fail are all dependent on MFC. I have the VC80.MFC redistributable in my InstallShield project, so I don't know why that should be failing. The strangest thing is that I can manually self register those components from the command line using regsvr32 after the MSI has failed.

I used sxstrace.exe on Windows Server 2008 x64 to see what was going on during the MSI installation and during the successful manual registration. The failed installation has the following error: 'ERROR: Cannot resolve reference Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".' and also complains: 'INFO: No publisher policy found.'.

Any ideas? I saw one post that said to use the "Windows Installer Self-Registration table (SelfReg)" option instead of the InstallShield Self-registration table.

Here are the relevant portions of the sxstrace:

THE FAILED TRACE DURING MSI INSTALLATION:

=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = AMD64
CultureFallBacks = en-US;en
ManifestPath = C:\Program Files\Quest Software\Vintela Authentication Services\vgp-mmc.dll
AssemblyDirectory = C:\Program Files\Quest Software\Vintela Authentication Services\
Application Config File =
-----------------
INFO: Parsing Manifest File C:\Program Files\Quest Software\Vintela Authentication Services\vgp-mmc.dll.
INFO: Manifest Definition Identity is (null).
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
INFO: Reference: Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
INFO: Reference: Microsoft.Windows.Common-Controls,language="*",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: Find publisher policy at C:\Windows\WinSxS\manifests\amd64_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_09bed9ebface8562.manifest
INFO: Publisher Policy redirected assembly version.
INFO: Post policy assembly identity is Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.1434".
INFO: Begin assembly probing.
INFO: Attempt to probe manifest at C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_88de292b2fb06019.manifest.
INFO: Manifest found at C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_88de292b2fb06019.manifest.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.VC80.CRT.mui,language="*",processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.1434".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture en-US.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.CRT.mui\8.0.50727.1434_en-US_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL.
INFO: Did not find manifest for culture en-US.
INFO: End assembly probing.
INFO: Resolving reference for culture en.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.CRT.mui\8.0.50727.1434_en_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL.
INFO: Did not find manifest for culture en.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.MFC\8.0.50727.762__1fc8b3b9a1e18e3b\Microsoft.VC80.MFC.DLL.
INFO: Attempt to probe manifest at C:\Program Files\Quest Software\Vintela Authentication Services\Microsoft.VC80.MFC.DLL.
INFO: Attempt to probe manifest at C:\Program Files\Quest Software\Vintela Authentication Services\Microsoft.VC80.MFC.MANIFEST.
INFO: Attempt to probe manifest at C:\Program Files\Quest Software\Vintela Authentication Services\Microsoft.VC80.MFC\Microsoft.VC80.MFC.DLL.
INFO: Attempt to probe manifest at C:\Program Files\Quest Software\Vintela Authentication Services\Microsoft.VC80.MFC\Microsoft.VC80.MFC.MANIFEST.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
ERROR: Cannot resolve reference Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
ERROR: Activation Context generation failed.
End Activation Context Generation.


SUCCESSFUL TRACE DURING MANUAL REGISTRATION:

=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = AMD64
CultureFallBacks = en-US;en
ManifestPath = c:\Program Files\Quest Software\Vintela Authentication Services\vgp-mmc.dll
AssemblyDirectory = c:\Program Files\Quest Software\Vintela Authentication Services\
Application Config File =
-----------------
INFO: Parsing Manifest File c:\Program Files\Quest Software\Vintela Authentication Services\vgp-mmc.dll.
INFO: Manifest Definition Identity is (null).
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
INFO: Reference: Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
INFO: Reference: Microsoft.Windows.Common-Controls,language="*",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: Find publisher policy at C:\Windows\WinSxS\manifests\amd64_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_09bed9ebface8562.manifest
INFO: Publisher Policy redirected assembly version.
INFO: Post policy assembly identity is Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.1434".
INFO: Begin assembly probing.
INFO: Attempt to probe manifest at C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_88de292b2fb06019.manifest.
INFO: Manifest found at C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_88de292b2fb06019.manifest.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.VC80.CRT.mui,language="*",processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.1434".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture en-US.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.CRT.mui\8.0.50727.1434_en-US_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL.
INFO: Did not find manifest for culture en-US.
INFO: End assembly probing.
INFO: Resolving reference for culture en.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.CRT.mui\8.0.50727.1434_en_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL.
INFO: Did not find manifest for culture en.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: Find publisher policy at C:\Windows\WinSxS\manifests\amd64_policy.8.0.microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.762_none_4267897f5770321e.manifest
INFO: Publisher Policy redirected assembly version.
INFO: Post policy assembly identity is Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Begin assembly probing.
INFO: Attempt to probe manifest at C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.762_none_c46a533c8a667ee7.manifest.
INFO: Manifest found at C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.762_none_c46a533c8a667ee7.manifest.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.VC80.MFC.mui,language="*",processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture en-US.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.MFC.mui\8.0.50727.762_en-US_1fc8b3b9a1e18e3b\Microsoft.VC80.MFC.mui.DLL.
INFO: Did not find manifest for culture en-US.
INFO: End assembly probing.
INFO: Resolving reference for culture en.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC80.MFC.mui\8.0.50727.762_en_1fc8b3b9a1e18e3b\Microsoft.VC80.MFC.mui.DLL.
INFO: Did not find manifest for culture en.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.Windows.Common-Controls,language="*",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture en-US.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.Windows.Common-Controls\6.0.0.0_en-US_6595b64144ccf1df\Microsoft.Windows.Common-Controls.DLL.
INFO: Did not find manifest for culture en-US.
INFO: End assembly probing.
INFO: Resolving reference for culture en.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.Windows.Common-Controls\6.0.0.0_en_6595b64144ccf1df\Microsoft.Windows.Common-Controls.DLL.
INFO: Did not find manifest for culture en.
INFO: End assembly probing.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: Auto Servicing Policy redirected assembly version.
INFO: Post policy assembly identity is Microsoft.Windows.Common-Controls,processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.6001.18000".
INFO: Begin assembly probing.
INFO: Attempt to probe manifest at C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_152e7382f3bd50c6.manifest.
INFO: Manifest found at C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_152e7382f3bd50c6.manifest.
INFO: End assembly probing.
INFO: Resolving reference Microsoft.Windows.Common-Controls.mui,language="*",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.6001.18000".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture en-US.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.Windows.Common-Controls.mui\6.0.6001.18000_en-US_6595b64144ccf1df\Microsoft.Windows.Common-Controls.mui.DLL.
INFO: Did not find manifest for culture en-US.
INFO: End assembly probing.
INFO: Resolving reference for culture en.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.Windows.Common-Controls.mui\6.0.6001.18000_en_6595b64144ccf1df\Microsoft.Windows.Common-Controls.mui.DLL.
INFO: Did not find manifest for culture en.
INFO: End assembly probing.
INFO: Parsing Manifest File C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1434_none_88de292b2fb06019.manifest.
INFO: Manifest Definition Identity is Microsoft.VC80.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.1434".
INFO: Parsing Manifest File C:\Windows\WinSxS\manifests\amd64_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.762_none_c46a533c8a667ee7.manifest.
INFO: Manifest Definition Identity is Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
INFO: Parsing Manifest File C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_152e7382f3bd50c6.manifest.
INFO: Manifest Definition Identity is Microsoft.Windows.Common-Controls,processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.6001.18000".
INFO: Reference: Microsoft.Windows.Common-Controls.Resources,language="*",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"
INFO: Resolving reference Microsoft.Windows.Common-Controls.Resources,language="*",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0".
INFO: Resolving reference for ProcessorArchitecture amd64.
INFO: Resolving reference for culture en-US.
INFO: Applying Binding Policy.
INFO: Auto Servicing Policy redirected assembly version.
INFO: Post policy assembly identity is Microsoft.Windows.Common-Controls.Resources,language="en-US",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.6001.18000".
INFO: Begin assembly probing.
INFO: Attempt to probe manifest at C:\Windows\WinSxS\manifests\amd64_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.6001.18000_en-us_2b39bc68206382b3.manifest.
INFO: Manifest found at C:\Windows\WinSxS\manifests\amd64_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.6001.18000_en-us_2b39bc68206382b3.manifest.
INFO: End assembly probing.
INFO: Parsing Manifest File C:\Windows\WinSxS\manifests\amd64_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.6001.18000_en-us_2b39bc68206382b3.manifest.
INFO: Manifest Definition Identity is Microsoft.Windows.Common-Controls.Resources,language="en-us",processorArchitecture="amd64",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.6001.18000".
INFO: Activation Context generation succeeded.
End Activation Context Generation.
Labels (1)
0 Kudos
(7) Replies
Dan_Peterson
Level 3

I change my MSI to use the Windows Installer Self Registration table, but that had no effect.

Is it possible that this is failing because my components are dependent on a redistributable included in the installation that is not already present on the machine? Could this causes the component to be unable to self register until after the installation is completed?

I have the VC80.CRT and VC80.MFC redistributables in my MSI. All of the components that successfully self registered were only dependent on VC80.CRT. Those that failed also require VC80.MFC. There is a version of VC80.CRT on the machine already. The sxstrace shows that the version of VC80.CRT that is already installed on the machine is being used for self registration during the installation.

This is the only thing I can think of that explains why I have this problem during the installation and everything works fine afterwards.
0 Kudos
Not applicable

The VC8 merge modules install to the Side By Side Assembly cache and rely on the built in MSI behavior to register them on the target machine. The side effect of this behavior is that they are not registered and available until after InstallFinalize. You can find more information on this if you google the MsiAssembly Table and choose the MSDN document for that table.

Unfortunately, due to your specific circumstances, the best suggestion I could make is to manually self-register your files after InstallFinalize using a Custom Action.

If you require administrative privileges you could try executing your Custom Action in the Commit sequence, but you will want to ensure that your custom action ignores any possible errors or failures to self-register.
0 Kudos
Dan_Peterson
Level 3

I don't think the custom action will work. I think there is something fundamentally wrong with self registration from InstallShield on Windows Server 2008 x64. I reset my target x64 image, downloaded the Microsoft 2005 C++ redistributable and installed, and verified that it had VC80.MFC (it was the exact verion that InstallShield redistributes). After that I tried to install my MSI, and the x64 COM components still failed to self register! The sxstrace has the same problems as before, and once again, I can manually self register immediately after.

I was using the Windows Installer Self Registration table rather than the InstallShield Self Registration table. I'm not sure that the InstallShield table would perform any better.

*sigh* - I think I'm going to have to give up and generate .reg files that I import manually into my InstallShield project. I gotta tell you that I'm not very happy with InstallShield's support for x64. Macrovision needs to get it together since x64 is recommended for Windows Server 2008, and all future versions of Window Server will be released on x64 only.
0 Kudos
Dan_Peterson
Level 3

The custom action actually does work. Just make sure you have one for removing COM registrations during uninstall.
0 Kudos
Sebastien02
Level 2

Hello,

Me too i have the same problem than Dan, except that i have 32bits COM components to register. On Windows Server 2008 32 bits i don't have any problem unlike the 64 bits edition. I try Installshield 2009 SP1 but always the same problem.
This problem will be fix one day ???

Sebastien
0 Kudos
WalterT
Level 4

First of all, bryanwolf thanks for your post back in 2008! It helped me a lot today in 2011!
Our programmer was trying to start a service which was using a VC SXS runtime, which he was installing via Merge module and he kept getting an error about it which rolled the installation back.
The problem was it is an older merge module for which there is no matching redistributable to be found.
Our way of dealing with it (using the info in the post of bryanwolf) was to make our own prerequisite that only installed that merge module, and install it before our main installer with the service. It worked like a charm.
Hope this helps someone.
0 Kudos
Poltron
Level 4

WalterT wrote:
First of all, bryanwolf thanks for your post back in 2008! It helped me a lot today in 2011!
Our programmer was trying to start a service which was using a VC SXS runtime, which he was installing via Merge module and he kept getting an error about it which rolled the installation back.
The problem was it is an older merge module for which there is no matching redistributable to be found.
Our way of dealing with it (using the info in the post of bryanwolf) was to make our own prerequisite that only installed that merge module, and install it before our main installer with the service. It worked like a charm.
Hope this helps someone.



Another option is to create your own prerequisite that installs vcredist.exe (Microsoft allows it to be redistributed in your installer). The difference between the two are that prerequisites get installed before your msi even runs, while merge modules are installed along side all your files. This is why you have to wait until InstallFinialize to use MFC and the like for installing the vc runtimes merge modules. I've successfully gotten MFC to work in the UI Sequence using this method, at it may resolve the problems mentioned here.
0 Kudos