0

MMM を使用してマニフェスト ファイルを生成し、VB6.exe クライアントを介して OCX 依存関係を持つ VB6 DLL を呼び出しましたが、これはターゲット マシンで Reg-Free で正常に動作します。

マニフェスト ファイルの抜粋は以下のとおりで、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 で Reg-Free にしたいと考えています。.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 展開用の 1 つのフォルダーにあります。

要約すると、VB6 クライアントでは正常に動作しますが、VBA / ActCtx クライアントでは動作しません。これが機能しない理由はありますか?

ありがとうデビッド

4

1 に答える 1

0

これは、VB6.0およびその他の開発ツールの一部として提供されるライセンスコントロールです。

ただそれに固執して、Excelのようなアプリケーションからそれを使用することはできません。私の知る限り、これはOffice Developer Edition、VSTA/VSTOなどを使用している場合にも当てはまります。

それだけが問題ではないかもしれませんが、このライブラリはVB 6.0などのアプリケーションの一部として以外は再配布できないため、ほとんど意味がありません。

于 2012-01-30T15:23:12.373 に答える