WiX - Register ComPlus application and Assigning a role to a component

1

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>
wix
asked on Stack Overflow May 3, 2013 by user2345206

1 Answer

1

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.

answered on Stack Overflow May 5, 2013 by user2345206

User contributions licensed under CC BY-SA 3.0