I have my installer registering my COMPLus component correctly. I have one last requirement to: Enforce component level access checks Under Roles have the “User” Role ticked.
I tried adding a complus:ComPlusCompoent as a child of my ComPlusAssembly but when I do this the installer fails with an error. (See below) I am not sure what I should put as the CLSID, perhaps this is what is causing the issue? Can anyone help me out? Explain what I should be putting for the CLSID?
Error and WiX snippet below Note: If I remove the complus:ComPlusComponent element then the installer works fine: My User ‘ComponentUser” is defined higher up. The role and user are assigned in the component but not ticked.
MSI (s) (68:BC) [16:25:08:579]: Invoking remote custom action. DLL: C:\Windows\Installer\MSICE31.tmp, Entrypoint: ComPlusInstallExecuteCommit Action 16:25:08: RegisterComPlusAssemblies. Registering COM+ components RegisterComPlusAssemblies: DLL: C:\NTApps\MyComPlusCore\ASA.DA.Insurance.dll ComPlusInstallExecuteCommit: Error 0x80070490: Failed to find component object ComPlusInstallExecuteCommit: Error 0x80070490: Failed to configure components ComPlusInstallExecuteCommit: Error 0x80070490: Failed to register assembly, key: ASA.DA.Insurance ComPlusInstallExecuteCommit: Error 0x80070490: Failed to register assemblies
<complus:ComPlusApplication Id="ASA.NETCoreData3"
Name="ASA.NETCoreData3"
Description="ASA .NET Core Data Components"
ApplicationAccessChecksEnabled="yes"
AccessChecksLevel="applicationComponentLevel"
Authentication="packet"
ImpersonationLevel="impersonate"
Activation="inproc">
<complus:ComPlusApplicationRole Id="ASA.NETCoreData3.Role"
Name ="User">
<complus:ComPlusUserInApplicationRole Id="ASA.NETCoreData3.User"
User="ComponentUser" />
</complus:ComPlusApplicationRole>
<complus:ComPlusAssembly Id="ASA.DA.Insurance"
DllPath="[#ASA.DA.Insurance_dll]"
Type="native"
RegisterInCommit="yes">
<complus:ComPlusComponent Id="ASA.DA.Insurance.Com"
CLSID="f8a83c94-9ab1-4c4d-8ebc-901aa747ac33"
Description="ASA.DA.Insurance.AppInsurance"
ComponentAccessChecksEnabled="yes" >
<complus:ComPlusRoleForComponent Id="ASA.DA.Insurance.Role"
ApplicationRole="ASA.NETCoreData3.Role" />
</complus:ComPlusComponent>
</complus:ComPlusAssembly>
</complus:ComPlusApplication>
Yes it was the CLSID. In the previous installers for this compoenet a vb script was used and the projects did not need a static CLSID and so it was specified in the projects.
I needed to add a Guid attribute to the concrete class and then use this guid in the WiX ComPlusComponent clsid.
Hope this helps someone.
User contributions licensed under CC BY-SA 3.0