2012-03-23 10 views
3

Ich habe eine Anwendung, die von der MSXML6 abhängt, in den meisten Maschinen, wenn die Anwendung bereitgestellt wird, ist dieses Paket bereits installiert, aber in einigen Fällen ist das MSXML6 nicht installiert, Die Frage ist, wie ich überprüfen kann, ob MSXML 6 Ist bereits installiert?Wie kann festgestellt werden, ob MSXML6 in einem System mit Delphi installiert ist?

+2

ich die zuverlässigste Art und Weise glauben einfach zu * versuchen * um das Ole-Objekt zu erstellen. – kobik

Antwort

6

Sie können überprüfen, ob die CLSID in der Registrierung vorhanden mit der CLSIDFromProgID Funktion, für MSXML die CLSID ist Msxml2.DOMDocument.6.0

Aktivieren Sie diese Beispielanwendung

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

Das sagt Ihnen nur, wenn die CLSID in der Registrierung vorhanden ist, nicht ob MSXML selbst tatsächlich ordnungsgemäß funktioniert. Um dies zu tun, müssen Sie es über 'CoCreateInstance()' instanziieren. –

+1

@RemyLebeau, In der Tat kann das OP den Aufruf der 'CoCreateInstance' Funktion hinzufügen. – RRUZ