在网页中自动下载 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