2012-03-23 27 views
3

私はMSXML6に依存するアプリケーションを持っていますが、アプリケーションがデプロイされたときにほとんどのマシンでこのパッケージがインストールされていますが、MSXML6がインストールされていないケースがいくつかあります。既にインストールされていますか?デルファイを使用しているシステムにMSXML6がインストールされているかどうかを確認するにはどうすればよいですか?

+2

は、私が最も確実な方法は、単に*試みることであると信じて、このサンプルアプリです*を使用してオブジェクトを作成します。 – kobik

答えて

6

CLSIDがCLSIDFromProgID機能を使用して、レジストリに存在するかどうかをチェックすることができ、MSXMLのためのCLSIDはMsxml2.DOMDocument.6.0

チェック

uses 
    ActiveX, 
    SysUtils; 

{ 
     Msxml2.DOMDocument.2.6 
     Msxml2.DOMDocument.3.0 
     Msxml2.DOMDocument.4.0 
     Msxml2.DOMDocument.5.0 
     Msxml2.DOMDocument.6.0 
} 
var 
    clsid: TCLSID; 
begin 
    try 
    if Succeeded(CLSIDFromProgID('Msxml2.DOMDocument.6.0', clsid)) then 
    Writeln('MSXML 6.0 Installed') 
    else 
    Writeln('MSXML 6.0 Not Installed'); 
    except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
    end; 
    Readln; 
end. 
+2

これは、MSXML自体が実際に正しく機能しているかどうかではなく、レジストリにCLSIDが存在するかどうかだけを通知します。そのためには、 'CoCreateInstance()'を使ってインスタンス化する必要があります。 –

+1

@RemyLebeau、実際、OPはCoCreateInstance関数にも呼び出しを追加できます。 – RRUZ

関連する問題