2013-05-03 29 views
1

我有我的安装程序正确注册我的COMPLus组件。 我有最后一项要求: 强制组件级别访问检查 在角色下勾选“用户”角色。WiX - 注册ComPlus应用程序并为组件分配角色

我尝试添加一个complus:ComPlusCompoent作为我的ComPlusAssembly的子项,但是当我这样做时,安装程​​序失败并显示错误。 (见下) 我不知道我应该把CLSID放在什么地方,也许这是什么原因造成了这个问题? 任何人都可以帮我吗?解释我应该为CLSID做些什么?

错误和维克斯片断如下 注: 如果我删除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> 

回答

1

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

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

希望这可以帮助别人。

+0

通常会推迟CLSID更改?当我更改我的汇编版本时,它会发生变化......所以我们每次修改版本时都必须更改我的WiX软件包。有没有办法让它保持不变? – 2014-01-14 11:38:37

相关问题