вызывать RegFree COM vb6 dll с зависимостями ocx из Excel - PullRequest
0 голосов
/ 29 декабря 2011

Я использовал MMM для создания файла манифеста для вызова библиотеки VB6 DLL с зависимостями OCX через клиент VB6.exe, и это прекрасно работает Reg-Free на целевой машине.

извлечение файла манифеста, как показано ниже, которое показывает зависимость управления MS Chart VB6 (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>  

Я хочу сделать эту работу Reg-Free с ExcelИспользование объекта Windows.ActCtx в Windows 7. Если я просто использую простой тестовый DLL-файл HelloWorld VB6 без зависимостей .ocx, это прекрасно работает в 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>

Однако, если я попробую ту же самую технику с полной DLL с зависимостями ocx, это даст код ошибки 339 (не может найти зависимость ocx) на целевой машине

Все файлы находятся в одной папке для развертывания XCOPY.

Подводя итог, он прекрасно работает с клиентом VB6, но не с клиентом VBA / ActCtx.Есть идеи, почему это не работает?

спасибо, Дэвид

1 Ответ

0 голосов
/ 30 января 2012

Это лицензионный элемент управления, поставляемый как часть VB 6.0 и других инструментов разработки.

Вы не можете просто заглянуть в него и использовать его из таких приложений, как Excel.Насколько я могу судить, это даже верно, если у вас есть Office Developer Edition, VSTA / VSTO и т. Д.

Это может быть не единственной проблемой, но поскольку эта библиотека не распространяется повторно, кроме как как часть VB6.0 и т. Д. Применение там мало смысла.

...