Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi MSXML-Version auslesen, wenn überhaupt installiert (https://www.delphipraxis.net/115795-msxml-version-auslesen-wenn-ueberhaupt-installiert.html)

torud 18. Jun 2008 07:48


MSXML-Version auslesen, wenn überhaupt installiert
 
Hallo Wissende,

wie kann man prüfen, ob MSXML beim Kunden installiert ist? Also per Code.
Und falls es installiert ist, wie bekommt man die Version heraus?

Bernhard Geyer 18. Jun 2008 08:21

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
Einfach ein interface per CoCreate anfordern und fehler pre try ... except abfangen. Installiert heißt bei COM nicht unbedingt das es auch funktionsfähig ist (DLL-Hölle).

soulies 18. Jun 2008 08:22

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
hoi,

könnte es sein (du kannst es ja bei dir prüfen) das du es 'ganz einfach' über die
registry bekommst ?

HKLM\Software\Microsoft\

Wenn der Unterordner 'MSXMLxxx' existiert hat er es installiert und die xxx geben die Version.

Bei mir steht MSXML60 - ich hätte gedacht Version 6.0 !

cya

xaromz 18. Jun 2008 11:19

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
Hallo,

da ich weiß, um was es geht, schau doch mal in die Unit "XMLHelp" meines XML-Pakets, da gibt es eine entsprechende Funktion.

Gruß
xaromz

torud 18. Jun 2008 13:46

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
Da hat doch wirklich der richtige geantwortet. Prima und danke!

Habe es jetzt erstmal nur zum Testen so gelöst, falls noch jemand an einer Lösung interessiert ist:

Delphi-Quellcode:
  if not(xmlhelp.IsMSXML6Installed) then
    MessageDlg('Auf Ihrem System ist leider kein MSXML 6 installiert.',mtError,[mbOK],0)
  else
    MessageDlg('Auf Ihrem System ist MSXML 6 installiert.',mtInformation,[mbOK],0);
Und in den Uses XMLHelp nicht vergessen.
Schlecht wäre aber eine Funktion mit Rückgabe der Version nicht...

xaromz 18. Jun 2008 13:59

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
Hallo,
Zitat:

Zitat von torud
Schlecht wäre aber eine Funktion mit Rückgabe der Version nicht...

da Du ja den Quellcode hast, kannst Du das sicher leicht selbst einbauen. Aber hier mal ein Anfang:
Delphi-Quellcode:
function MSXMLVersion: Integer;
var
  XML: IXMLDOMDocument;
begin
  Result := 0;
  try
    XML := CoDOMDocument60.Create;
    if Assigned(XML) then
      Result := 6;
  except
    try
      XML := CoDOMDocument40.Create;
      if Assigned(XML) then
        Result := 4;
    except
    end;
  end;
end;
Gruß
xaromz

torud 18. Jun 2008 14:28

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
Danke Dir, werde es ändern...

shmia 18. Jun 2008 14:52

Re: MSXML-Version auslesen, wenn überhaupt installiert
 
Mit folgender Funktion geht das etwas eleganter:
Delphi-Quellcode:
function ProgIDExists(const ProgID:WideString):Boolean;
var
   tmp : TGUID;
begin
   Result := Succeeded(CLSIDFromProgID(PWideChar(ProgID), tmp));
end;
Damit wird kein Objekt erzeugt, dass man dann trotzdem nicht haben möchte.
Letztendlich macht CLSIDFromProgID nichts anderes, als in die Registry zu schauen; aber eben auf dem offiziellen Weg.
Delphi-Quellcode:
if ProgIDExists('Msxml2.DOMDocument.6.0') then
   result := 6
else if ProgIDExists('Msxml2.DOMDocument.5.0') then
   ...
Zu den ProgIDs siehe: http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf