1

我让我的安装程序正确注册了我的 COMPLus 组件。我还有最后一个要求:强制执行组件级别的访问检查 在角色下勾选“用户”角色。

我尝试添加一个 complus:ComPlusCompoent 作为我的 ComPlusAssembly 的子项,但是当我这样做时,安装程​​序失败并出现错误。(见下文)我不确定我应该将什么作为 CLSID,也许这就是导致问题的原因?谁能帮我吗?解释我应该为 CLSID 输入什么?

下面的错误和 WiX 片段 注意:如果我删除了 complus:ComPlusComponent 元素,那么安装程序可以正常工作:我的用户“ComponentUser”被定义得更高。角色和用户在组件中分配但未勾选。

MSI (s) (68:BC) [16:25:08:579]:调用远程自定义操作。DLL:C:\Windows\Installer\MSICE31.tmp,入口点:ComPlusInstallExecuteCommit 操作 16:25:08:RegisterComPlusAssemblies。注册 COM+ 组件 RegisterComPlusAssemblies:DLL:C:\NTApps\MyComPlusCore\ASA.DA.Insurance.dll ComPlusInstallExecuteCommit:错误 0x80070490:无法找到组件对象 ComPlusInstallExecuteCommit:错误 0x80070490:无法配置组件 ComPlusInstallExecuteCommit:错误 0x80070490:无法注册程序集,键:ASA.DA.Insurance ComPlusInstallExecuteCommit:错误 0x80070490:无法注册程序集

<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>
4

1 回答 1

1

是的,它是 CLSID。在此组件的先前安装程序中,使用了 vb 脚本,并且项目不需要静态 CLSID,因此在项目中指定了它。

我需要向具体类添加一个 Guid 属性,然后在 WiX ComPlusComponent clsid 中​​使用这个 guid。

希望这可以帮助某人。

于 2013-05-05T21:25:30.950 回答