Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WiX COM注册失败,但导出注册表项、删除和重新导入工作正常_Com_Wix_Windows Installer_64 Bit_Com Interop - Fatal编程技术网

WiX COM注册失败,但导出注册表项、删除和重新导入工作正常

WiX COM注册失败,但导出注册表项、删除和重新导入工作正常,com,wix,windows-installer,64-bit,com-interop,Com,Wix,Windows Installer,64 Bit,Com Interop,我已经用WiX创建了一个MSI。我正在尝试为x64 Windows Vista上的COM互操作注册.NET组件。但是,在运行MSI安装并启动使用这些组件的网站后,我看到以下错误消息: 组件[0xC]hr:0x0 CLSID: {3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}无法创建组件。 这可能是组件注册问题 这似乎不是由通常的问题引起的,经过多次尝试,我发现我可以通过执行以下操作来解决此问题: 导出CLSID\{3C1CEEC0-3B20-46F8-8D4E-5F1

我已经用WiX创建了一个MSI。我正在尝试为x64 Windows Vista上的COM互操作注册.NET组件。但是,在运行MSI安装并启动使用这些组件的网站后,我看到以下错误消息:

组件[0xC]hr:0x0 CLSID: {3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}无法创建组件。 这可能是组件注册问题

这似乎不是由通常的问题引起的,经过多次尝试,我发现我可以通过执行以下操作来解决此问题:

  • 导出CLSID\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}注册表项
  • 删除CLSID \{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}的键和所有子键
  • 从步骤1重新导入导出的.reg
  • 完成这3个步骤后,组件被正确解析,web应用程序工作正常

    更新:我刚在安装程序运行后导出了整个HKCR注册表项,然后执行了上述3个步骤。对这两个文件进行差异显示没有差异

    所以我的问题是,我需要对我的WiX安装程序做什么才能让它正常工作?我想我做错了什么,但是什么呢?

    仅供参考-我正在使用以下WIXXML创建注册表项(我已经尝试使用WIXClass元素,但也不起作用)。注意:var.CLSID是带有HKCR\CLSID的变量(不是WOW6432节点)

    
    
    答案(对我来说)是注册表权限

    睡了一个好觉之后,我意识到如果注册表项导出没有差异,那么答案一定是注册表差异没有被导出。当然,其中一种可能性(可能是唯一的?)是注册表权限

    用更好的谷歌术语,我找到了线索。此线程解释说,如果您没有将WiX属性
    ALLUSERS
    的值设置为
    1
    (即
    ),则默认情况下,安装程序将在每个用户配置单元中运行并安装注册表项。因此,为什么我的web应用程序无法看到它们(因为它是以不同的用户身份运行的)并且无法创建它们

    我的故事的寓意是:你不能指望Heat.exe做所有的工作。你不能只涉猎WiX和MSI

    我希望某处有一个简洁的WiX安装程序项目清单

        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}" Value="Awesome.Component" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Value="mscoree.dll" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="ThreadingModel" Value="Both" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\ProgId" Value="Awesome.Component" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="Class" Value="Awesome.Component" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="Assembly" Value="AwesomeAssembly, Version=0.9.2.0, Culture=neutral, PublicKeyToken=8a030859d27c8274" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="CodeBase" Value="file:///[#fil7B6E8E93E37519B6844149C87BAD9C0B]" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="Class" Value="Awesome.Component" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="Assembly" Value="AwesomeAssembly, Version=0.9.2.0, Culture=neutral, PublicKeyToken=8a030859d27c8274" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="CodeBase" Value="file:///[#fil7B6E8E93E37519B6844149C87BAD9C0B]" Type="string" Action="write" />