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