【发布时间】:2012-01-30 02:42:28
【问题描述】:
我使用 MMM 生成一个清单文件,以通过 VB6.exe 客户端调用具有 OCX 依赖项的 VB6 DLL,这在目标机器上运行良好且无需注册。
清单文件的摘录如下,它显示了 VB6 MS Chart 控件依赖项 (MSCHRT20.ocx)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Make My Manifest 0.9.305 -->
<assemblyIdentity name="DLL_Tester" processorArchitecture="X86" type="win32" version="1.0.0.0" />
<file name="TankChecker3_DLL.dll">
<typelib tlbid="{A23FD5EC-6750-4454-8417-A53FB6436646}" version="14.0" flags="" helpdir="" />
<comClass clsid="{265A4F7E-3380-41F9-B3D2-624D0B9DD0FA}" tlbid="{A23FD5EC-6750-4454-8417-A53FB6436646}" progid="TankChecker3_DLL.CChart" description="" />
</file>
<file name="MSCHRT20.OCX">
<typelib tlbid="{65E121D4-0C60-11D2-A9FC-0000F8754DA1}" version="2.0" flags="control" helpdir="" />
<comClass clsid="{3A2B370C-BA0A-11D1-B137-0000F8753F5D}" tlbid="{65E121D4-0C60-11D2-A9FC-0000F8754DA1}" progid="MSChart20Lib.MSChart.2" description="Microsoft Chart Control 6.0 (OLEDB)" />
</file>
:
: etc
:
</assembly>
我想使用 Windows 7 中的 Windows.ActCtx 对象使这项工作在 Excel 中免于注册。如果我只使用没有 .ocx 依赖项的简单测试 HelloWorld VB6 dll,这在目标上的 Excel 2010 中可以正常工作机器
我使用的测试清单文件见下文
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Make My Manifest 0.9.305 -->
<assemblyIdentity name="SideBySide2Client" processorArchitecture="X86" type="win32" version="1.0.0.0" />
<file name="SideBySide2.dll">
<typelib tlbid="{DD83DC2F-C5C0-40F2-B2F4-B7310B098A16}" version="6.0" flags="" helpdir="" />
<comClass clsid="{EDF044DE-A6EF-4FE9-9446-67384C1CA8E4}" tlbid="{DD83DC2F-C5C0-40F2-B2F4-B7310B098A16}" threadingModel="Apartment" progid="SideBySide2.SideBySideClass" description="" />
</file>
</assembly>
但是,如果我尝试使用带有 ocx 依赖项的完整 dll 的相同技术,它会在目标机器上给出错误代码 339(找不到 ocx 依赖项)
所有文件都在 XCOPY 部署的一个文件夹中。
总而言之,它适用于 VB6 客户端,但不适用于 VBA / ActCtx 客户端。 任何想法为什么这不起作用?
感谢大卫
【问题讨论】:
标签: vba regfreecom