【发布时间】:2012-04-08 10:21:27
【问题描述】:
我有一个依赖于MSXML6 的应用程序,在部署该应用程序的大多数机器中,这个包已经安装,但在少数情况下,MSXML6 没有安装,问题是我如何检查是否MSXML 6 已经安装了吗?
【问题讨论】:
-
我认为最可靠的方法是简单地尝试创建ole对象。
我有一个依赖于MSXML6 的应用程序,在部署该应用程序的大多数机器中,这个包已经安装,但在少数情况下,MSXML6 没有安装,问题是我如何检查是否MSXML 6 已经安装了吗?
【问题讨论】:
您可以使用CLSIDFromProgID 函数检查注册表中是否存在CLSID,对于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.
【讨论】:
CoCreateInstance() 实例化它。
CoCreateInstance 函数中。