У меня есть приложение, которое зависит от MSXML6, на большинстве машин, когда приложение развернуто, этот пакет уже установлен, но в некоторых случаях MSXML6 не установлен. Вопрос в том, как я могу проверить, действительно ли MSXML 6 уже установлено?Как определить, установлен ли MSXML6 в системе с использованием delphi?
ответ
вы можете проверить, если 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.
Это только скажет вам, существует ли CLSID в реестре, а не работает ли сам MSXML. Для этого вам нужно создать экземпляр с помощью 'CoCreateInstance()'. –
@RemyLebeau. Действительно, OP может также добавить вызов функции 'CoCreateInstance'. – RRUZ
Я считаю, что самый надежный способ это просто * попробовать * для создания объекта ole. – kobik