如何通过HEAT在VB6中调用WIX 3的COM Dlls?

2026-05-06 08:311阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计553个文字,预计阅读时间需要3分钟。

如何通过HEAT在VB6中调用WIX 3的COM Dlls?

我在使用WIX 3。我已经使用heat为VB6 dll创建了一个wxs文件。创建.msi没有错误,安装也成功。一切似乎都很顺利,我可以从VB客户端成功调用组件。但是,如果我从ASP页面调用组件,我得到0x80的错误。

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

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

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

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

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

> HKCR的所有参赛作品都很合适
> regsvr32在HKLM中添加条目,而安装程序不接触HKLM

我想知道这是不是问题,还是我完全走错了路.

MSDN(msdn.microsoft.com/en-us/library/ms694355(VS.85).aspx)提到HKLM需要注册表项,想知道我在这里缺少什么.

以下是由heat创建的文件.

如何通过HEAT在VB6中调用WIX 3的COM Dlls?

<?xml version="1.0" encoding="utf-8"?> <Wix xmlns="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客户端也能正常工作.我从其他帖子中读到这不是用的.有人能告诉我要做什么吗?

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

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

完成后,参赛作品将在HKCR和HKLM进行.

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

本文共计553个文字,预计阅读时间需要3分钟。

如何通过HEAT在VB6中调用WIX 3的COM Dlls?

我在使用WIX 3。我已经使用heat为VB6 dll创建了一个wxs文件。创建.msi没有错误,安装也成功。一切似乎都很顺利,我可以从VB客户端成功调用组件。但是,如果我从ASP页面调用组件,我得到0x80的错误。

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

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

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

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

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

> HKCR的所有参赛作品都很合适
> regsvr32在HKLM中添加条目,而安装程序不接触HKLM

我想知道这是不是问题,还是我完全走错了路.

MSDN(msdn.microsoft.com/en-us/library/ms694355(VS.85).aspx)提到HKLM需要注册表项,想知道我在这里缺少什么.

以下是由heat创建的文件.

如何通过HEAT在VB6中调用WIX 3的COM Dlls?

<?xml version="1.0" encoding="utf-8"?> <Wix xmlns="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客户端也能正常工作.我从其他帖子中读到这不是用的.有人能告诉我要做什么吗?

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

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

完成后,参赛作品将在HKCR和HKLM进行.

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