5

シンプルな Hello World メッセージ ボックスの ActiveX コントロールを実行しようとしています。最初にクラス ライブラリを作成し、現在は dll を作成し、次に HTML ページを作成して activeX コントロールを呼び出しました。

<!DOCTYPE>
<html>
<head>
      <title>DemoActiveX</title>
</head>
<body>
   <OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55">
</OBJECT>
    <script type="text/javascript">
        try {
            var obj = document.DemoActiveX;
            if (obj) {
                alert(obj.SayHello());
            } else {
                alert("Object is not created!");
            }
        } catch (ex) {
            alert("Some error happens, error message is: " + ex.Description);
        }
    </script>
</body>
</html>

私のマシンで試したとき、regasm /codebase "dll path"を使用してdllを登録していましたが、うまくいきました。

別のマシンで実行しようとしたときの問題は、次の手順に従いました: 1) セットアップ プロジェクトを作成し、dll ファイルを追加しました。

2) .inf ファイルを作成し、次の 2 つのコンテンツを試しました。

[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ActiveX.dll=ActiveX.dll

[ActiveX.dll]
file-win32-x86=thiscab
clsid=400DCE17-4B26-4E59-9A88-AF39E2BE4A55
FileVersion=1,0,0,0

RegisterServer=はい

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

[Setup Hooks]
install=install

[install]
run=msiexec.exe /package """%EXTRACT_DIR%\DemoActiveXSetup.msi""" /qn

3) .inf ファイルと setup.exe ファイルを含む .CAB ファイルを作成しました。 4) HTML ページのオブジェクトを次のように変更しました。

<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55" 
codebase="ActiveXCAB.CAB" ></OBJECT>  

他のマシンでページを開こうとすると、要求ウィンドウが開き、CAB を開く要求が表示され、[はい] を押しても何も起こりませんでした!!!!! setup.exe または msi ファイルが開かないのはなぜですか?? ところで、セットアップ ファイルを手動でインストールすると、activeX が機能しました。

4

1 に答える 1

4

問題を解決しました:)問題は次のとおりです。

1) 以前は msi ファイルのみ、または setup.exe を CAB ファイルに配置していましたが、msi と setup.exe の両方を配置し、inf ファイルで setup.exe を参照する必要があります。

2) inf ファイル形式が間違っていました。正しい形式は次のとおりです。

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

 [Add.Code]
 setup.exe=setup.exe

 [setup.exe]
 file-win32-x86=thiscab
 clsid={415D09B9-3C9F-43F4-BB5C-C056263EF270}
 FileVersion=1,0,0,0

 [Setup Hooks]
 RunSetup=RunSetup

 [RunSetup]
 run="%EXTRACT_DIR%\setup.exe"

幸運を :)

于 2012-12-30T15:49:55.973 に答える