2012-03-23 1 views
3

У меня есть приложение, которое зависит от MSXML6, на большинстве машин, когда приложение развернуто, этот пакет уже установлен, но в некоторых случаях MSXML6 не установлен. Вопрос в том, как я могу проверить, действительно ли MSXML 6 уже установлено?Как определить, установлен ли MSXML6 в системе с использованием delphi?

+2

Я считаю, что самый надежный способ это просто * попробовать * для создания объекта ole. – 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

Это только скажет вам, существует ли CLSID в реестре, а не работает ли сам MSXML. Для этого вам нужно создать экземпляр с помощью 'CoCreateInstance()'. –

+1

@RemyLebeau. Действительно, OP может также добавить вызов функции 'CoCreateInstance'. – RRUZ

 Смежные вопросы

  • Нет связанных вопросов^_^