2013-08-21 5 views
0

Я написал плагин activeX и сделал файл кабины для упаковки ocx с 2 файлами dll, просто вызывая a.dll и b.dll. Ocx полагается на a.dll, а a.dll полагается на b.dll. Инф-файл состоит в следующем:Файл dll не может быть скопирован при автоматической загрузке CAB на веб-странице

[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 - сторонняя библиотека.

Я был так озадачен этим и жаждал вашей помощи.

ответ

0

Попробуйте удалить DestDir=11, так что ничего не происходит в папке system32. Файлы DLL вашей зависимости будут помещены в ту же папку, что и OCX. Кроме того, могут отсутствовать библиотеки CRT DLL (MSVC * .DLL). Я бы предложил переключиться на ссылку на ЭЛТ статически в настройках проекта на C++. Проверьте, не имеет ли какая-либо из ваших DLL нерешенных зависимостей на целевой машине, используя Dependency Walker.

+1

Спасибо за ваш ответ, avo. Я пробовал ваш метод, но все равно не работал. Я попробовал новый способ его реализации. Сделайте Копирование и регистрацию файлов ocx и dll в программе win32 (файлы как встроенные ресурсы exe). А затем укажите ссылку на веб-странице, чтобы загрузить exe. Еще раз спасибо ~ –