在网页中自动下载 CAB 时无法复制 dll 文件

Posted

技术标签:

【中文标题】在网页中自动下载 CAB 时无法复制 dll 文件【英文标题】:A dll file couldn't be copied when download CAB automatically in a web page 【发布时间】:2013-08-21 08:31:35 【问题描述】:

我写了一个activeX插件并制作了一个cab文件来用2个dll文件打包ocx,然后调用a.dll和b.dll。 ocx 依赖于 a.dll,a.dll 依赖于 b.dll。 inf文件是这样的:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0  

[Add.Code]
test.ocx=test.ocx
a.dll=a.dll
b.dll=b.dll

[test.ocx]
file-win32-x86=thiscab
clsid=AB1408A0-10F6-40BA-984D-074D7BDC3126
FileVersion=3,1,0,17
DestDir=11
RegisterServer=yes

[a.dll]
file-win32-x86=thiscab
FileVersion=2,1,1,16
DestDir=11

[b.dll]
file-win32-x86=thiscab
FileVersion=2,0,0,16
DestDir=11

下载完成后发现a.dll在C:/windows/system32中不存在,但其他两个文件已经在里面,而且ocx已经注册了。

a.dll 是我自己写的。 b.dll 是第三方库。

我对此感到非常困惑,并渴望得到您的帮助。

【问题讨论】:

【参考方案1】:

尝试删除DestDir=11,这样system32 文件夹中就没有任何内容了。您的依赖 DLL 文件将与您的 OCX 放在同一文件夹中。此外,您可能缺少 CRT DLL (MSVC*.DLL)。我建议在您的 C++ 项目设置中切换到静态链接到 CRT。使用 Dependency Walker 检查您的任何 DLL 是否在目标计算机上有任何未解决的依赖项。

【讨论】:

感谢您的回复,avo。我试过你的方法,还是不行。我尝试了一种新的方法来实现它。在win32程序中做ocx和dll文件的Coping和注册(文件作为exe的内嵌资源)。然后在网页中提供一个链接来下载exe。再次感谢~

以上是关于在网页中自动下载 CAB 时无法复制 dll 文件的主要内容,如果未能解决你的问题,请参考以下文章

下载的东西里有插件,那啥是插件,插件有啥用呢?可不可以删除?

开机显示“无法启动此程序,因为计算机中丢失”是啥意思?

javaWEB项目中JSP页面使用<object>标签中的属性basecode加载cab文件,打开页面后无法自动下载cab

无法更新自动刷新引用

安装Adobe dreamwerver CS6程序时无法安装,显示丢失mfc100u.dll

使用 cab 文件安装应用程序时,文化特定的字符串资源 dll 在 .net 紧凑框架中不起作用