【问题标题】:WIX 3 : Using HEAT for Visual Basic 6 COM DllsWIX 3:对 Visual Basic 6 COM Dll 使用 HEAT
【发布时间】:2009-09-04 15:24:06
【问题描述】:

我正在使用 WIX 3。我使用 heat 为 VB6 dll 创建了 wxs 文件。 msi创建没有任何错误,安装也成功。

一切似乎都很好,我可以从 VB 客户端成功调用该组件。

但是,如果我从 ASP 页面调用组件,则会得到 0x800401f3。

如果我使用自我注册 (regsvr32) 而不是安装程序,则两者都可以正常工作。

我做了一个注册表差异来弄清楚自我注册(regsvr32)和安装程序之间的区别,我看到了以下内容

  1. HKCR 中的所有条目都匹配 - 在这里都很好
  2. regsvr32 在 HKLM 中添加条目,而安装程序不会触及 HKLM

我想知道这是不是问题所在,还是我完全走错了方向。

MSDN (http://msdn.microsoft.com/en-us/library/ms694355(VS.85).aspx) 提到 HKLM 中需要注册表项,想知道我在这里遗漏了什么。

下面是heat创建的文件。

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="dirAD70B10292EAB7CAC7171859FBB23AA9" Name="vbdll" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirAD70B10292EAB7CAC7171859FBB23AA9">
            <Component Id="cmp9D818C62A6239E8B51E971A0048D0C05" Guid="PUT-GUID-HERE">
                <File Id="filDD6F51EC5018EF4A9A312FFA6AC4257D" KeyPath="yes" Source="SourceDir\vbdll\act.dll">
                    <TypeLib Id="{80D8DA04-72C9-4D36-B269-57D989187ACF}" Description="act" HelpDirectory="dirAD70B10292EAB7CAC7171859FBB23AA9" Language="0" MajorVersion="1" MinorVersion="0">
                        <Class Id="{31BD65B6-9479-40EB-83C0-E717CD4793DD}" Context="InprocServer32" Description="act.def" ThreadingModel="apartment" Version="1.0" Programmable="yes">
                            <ProgId Id="act.def" Description="act.def" />
                        </Class>
                        <Interface Id="{C6D46026-CD7E-4AB0-B3B6-810FBF435BEF}" Name="def" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    </TypeLib>
                </File>
                <RegistryValue Root="HKCR" Key="CLSID\{31BD65B6-9479-40EB-83C0-E717CD4793DD}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" />
            </Component>
        </DirectoryRef>
    </Fragment>
</Wix>

更新:使用文件的“SelfReg”选项使 ASP 客户端也能正常工作。我从其他帖子中读到,这是不可以使用的。谁能告诉我该怎么做?

【问题讨论】:

    标签: vb6 wix wix3


    【解决方案1】:

    要让安装程序将条目放在 HKLM 下,必须将安装标记为 perMachine,默认似乎是 perUser,如下所示。

    <Package InstallScope="perMachine" InstallerVersion="200" Languages="1033" Compressed="yes" SummaryCodepage="1252" />
    

    完成后,条目将进入 HKCR 和 HKLM。

    我希望有人觉得这很有用,花了我 6 个小时..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-13
      • 2011-01-07
      • 2011-05-20
      • 2012-08-05
      • 1970-01-01
      • 2023-04-09
      • 2010-09-06
      相关资源
      最近更新 更多