【问题标题】:How determine if MSXML6 is installed in a system using Delphi?如何确定 MSXML6 是否安装在使用 Delphi 的系统中?
【发布时间】:2012-04-08 10:21:27
【问题描述】:

我有一个依赖于MSXML6 的应用程序,在部署该应用程序的大多数机器中,这个包已经安装,但在少数情况下,MSXML6 没有安装,问题是我如何检查是否MSXML 6 已经安装了吗?

【问题讨论】:

  • 我认为最可靠的方法是简单地尝试创建ole对象。

标签: xml delphi msxml


【解决方案1】:

您可以使用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.

【讨论】:

  • 这只会告诉您 CLSID 是否存在于注册表中,而不是告诉您 MSXML 本身是否实际运行正常。为此,您必须通过 CoCreateInstance() 实例化它。
  • @RemyLebeau,确实,OP 也可以将 a 调用添加到 CoCreateInstance 函数中。
猜你喜欢
  • 1970-01-01
  • 2013-04-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
相关资源
最近更新 更多