我让我的安装程序正确注册了我的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>
答案 0 :(得分:1)
是的,这是CLSID。 在此compoenet的先前安装程序中,使用了vb脚本,并且项目不需要静态CLSID,因此在项目中指定了它。
我需要在具体类中添加一个Guid属性,然后在WiX ComPlusComponent clsid中使用这个guid。
希望这有助于某人。