使用WiX向Windows注册表添加新的CLSID

时间:2012-03-06 11:41:27

标签: wix registry ifilter clsid wds

我正在尝试使用Windows桌面搜索注册新的过滤器。实现这一目标的理想方法是使用现有的持久性处理程序CLSID注册新的过滤器。但是这是不可能的,因为.html PersistentHandler CLSID {eec97550-47a9-11cf-b952-00aa0051fe20}受WRP(More about the problem)保护。

作为一种解决方法,我正在尝试创建一个与{eec97550-47a9-11cf-b952-00aa0051fe20}完成相同工作的不同CLSID。

这是我关注的示例代码。我是WiX新手并编辑Windows注册表。

<File Id="HTMLfilter.DLL">
    <Class Id="$(var.CLSID_HtmlIFilter)" Context="InprocServer32" ThreadingModel="both" Description="Html Filter" />
</File>

有人可以帮我解决这些问题;

  • 如何创建不隶属于任何文件的CLSID?既然我的 新的CLSID正在做上面提到的CLSID的工作,我想这是 它应该如何。

  • 如何创建名为PersistentAddinsRegistered的子目录 而不是InprocSever32

由于

2 个答案:

答案 0 :(得分:1)

查看此页面here显示如何将COM对象添加到安装程序

答案 1 :(得分:1)

我建议将所选分支导出到注册表文件(Export all or part of the registry to a text file)。

然后使用Heat.exe收获注册表文件并将其输出包含在您的项目中。

这是一个例子

    <Fragment>
    <DirectoryRef Id="TARGETDIR">
        <Component Id="cmp6E2CE62C9ADECD355465514E3C8F354E" Guid="PUT-GUID-HERE" KeyPath="yes">
            <RegistryKey Key=".ascx\PersistentHandler" Root="HKCR">
                <RegistryValue Value="{eec97550-47a9-11cf-b952-00aa0051fe20}" Type="string" />
            </RegistryKey>
        </Component>
    </DirectoryRef>
</Fragment>