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?
Antwort
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.
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. –
@RemyLebeau, In der Tat kann das OP den Aufruf der 'CoCreateInstance' Funktion hinzufügen. – RRUZ
ich die zuverlässigste Art und Weise glauben einfach zu * versuchen * um das Ole-Objekt zu erstellen. – kobik