![]() |
prüfen ob MSXML4 installiert ist
Hallo,
ich habe ein kleines Programm das msxml4 verwendet. Bevor das Programm startet wird mit einer Funktion abgefragt ob msxml4 installiert ist. Die Funktion hatte ich aus diesem Forum:
Delphi-Quellcode:
Das funktioniert auf Win2000 ganz gut. Wenn das aber unter WinXP läuft dann erhalte ich immer ein false, ob msxml installiert ist oder nicht.
function msxml4Exists():boolean;
var reg :TRegistry; s :String; begin reg:= TRegistry.Create(KEY_READ); if (reg<>nil)then begin with reg do try RootKey := HKEY_CLASSES_ROOT; if (OpenKey('CLSID\'+ GUIDToString(CLASS_DOMDocument40) +'\InProcServer32',false)) then try s:=ReadString(''); Result :=(s<>'') and (FileExists(s)); finally CloseKey; end; finally Free; end; end; end; Kann mir jemand weiterhelfen? Danke |
Re: prüfen ob MSXML4 installiert ist
Pardon :oops:
Muss gleich nmochmal editieren.. Edit2: Versuch doch einfach mit dem Prog nach der .dll zu suchen! Ausserdem ist MS XML4.0 automatisch bei XP drauf. |
Re: prüfen ob MSXML4 installiert ist
Hi,
das Problem ist, dass unter XP die Wildcard %SYSDIR% verwendet wird. Am Besten änderst du die fileexists-Zeile. Chris |
Re: prüfen ob MSXML4 installiert ist
Zitat:
Wie meinst Du nach der DLL suchen? In den Systemverzeichnissen? Liegt die DLL immer im selben Verzeichnis? Zitat:
Delphi-Quellcode:
Was könnte ich da ändern? Wie gesagt den Code habe ich aus diesem Forum. Hab ihn nicht selbst geschrieben.
Result :=(s<>'') and (FileExists(s));
Und was war mit %SYSDIR%? Sollte ich %SYSDIR%\msxml.dll suchen lassen? Danke |
Re: prüfen ob MSXML4 installiert ist
oh.. jetzt sehe ich es. der Pfad steht so in der Registry drin %SystemRoot%\System\msxml.dll
Kann ich nicht auch irgendwo den Wert von %SystemRoot% auslesen? |
Re: prüfen ob MSXML4 installiert ist
Wenn ich mich nicht irre gibt es solche Konstanten in Delphi, die auf das Windows Verzeichnis und auf das System-Verzeichnis hinweisen.
|
Re: prüfen ob MSXML4 installiert ist
Danke euch für die Hinweise. :-D
Falls es jemanden interessiert so funktioniert es auch unter WinXP:
Delphi-Quellcode:
function msxml4Exists():boolean;
var reg :TRegistry; s:String; begin reg:= TRegistry.Create(KEY_READ); if (reg<>nil)then begin with reg do try RootKey := HKEY_CLASSES_ROOT; if (OpenKey('CLSID\'+ GUIDToString(CLASS_DOMDocument40) +'\InProcServer32',false)) then try s:=ReadString(''); finally CloseKey; end; finally Free; end; end; //---Wenn in der Pfadangabe %SystemRoot% vorkommt (bei WinXP) if pos('%SystemRoot%',s)>0 then begin s:= getSysDir() + ExtractFileName(s); end; result:=FileExists(s); end;
Delphi-Quellcode:
function getSysDir():String;
var sysdir:String; begin SetLength(sysdir,254); GetSystemDirectory(@sysdir[1],length(sysdir)); //---Da die Zeichenkette nun 255 Zeichen lang ist, existieren NULL Zeichen diese werden in nächter Zeile entfernt Delete(sysdir,pos(chr(0),sysdir),length(sysdir)-pos(chr(0),sysdir)+1); result :=SysDir+'\'; end; |
Re: prüfen ob MSXML4 installiert ist
Ich denke mal Chris sollte das in seinem Tutorial mit einfügen :)
|
Re: prüfen ob MSXML4 installiert ist
Hi,
mit einer kleinen Änderung und einem kleinem Vermerk zum Autor und drin ist es... ;) Chris |
Re: prüfen ob MSXML4 installiert ist
Zitat:
Delphi-Quellcode:
var
s : string; begin SetLength(s,MAX_PATH); SetLength(s,GetSystemDirectory(@s[1],length(s))); end; |
Re: prüfen ob MSXML4 installiert ist
Zitat:
Stimmt dein Vorschlag ist doch um Welten einfacher. Danke |
Re: prüfen ob MSXML4 installiert ist
Dieses Problem habe ich beim NSIS Script. Unter XP meint er immer, das es nicht installiert sei, aber es ist installiert. Nach welchem Schlüssel muss ich für XP die Reg abfragen, wenn ich schon beim Installer machen will? Der oben genannte???
Greetz und thx schonma, |
Re: prüfen ob MSXML4 installiert ist
Zitat:
Delphi-Quellcode:
Erhalte ich das:
GUIDToString(CLASS_DOMDocument40)
Delphi-Quellcode:
folglich müsste der Key also lauten:
{88D969C0-F192-11D4-A65F-0040963251E5}
Delphi-Quellcode:
Dieser befindet sich in HKEY_CLASSES_ROOT
CLSID\{88D969C0-F192-11D4-A65F-0040963251E5}
Leider ist das nur eine Vermutung. Bin selbst noch'n Neuling.:oops: Ich weiß nicht ob dieser Key{88D96...usw...} für jede Installation gleich ist oder ob dieser auf jedem Rechner anderst aussieht. Hab den Key auf zwei Rechnern verglichen und beide waren gleich. Also gehe ich mal davon aus, dass dieser Key immer gleich ist und du in dem Script danach suchen kannst. |
Re: prüfen ob MSXML4 installiert ist
Hey danke :thuimb: , werd ich dann gleich mal ins Script einbauen.
|
Re: prüfen ob MSXML4 installiert ist
Dabei fällt mir ein, @Chakotay: das fehlt im MO-Skript ja noch ... :oops: ... muss dir wohl noch mal ein aktuelles Script zukommen lassen ... Fällt das schon unter Spam, oder kann man das noch als "exzessives Bugfixing" durchgehen lassen? :wink:
|
Re: prüfen ob MSXML4 installiert ist
Hi,
@Mathias: ach... das passt schon. So lange sie keine .exe-Dateianhänge dran sind (Spamihilator filtert die inzwischen) und nicht größer als 100KB, dann passt das. :) Danke, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz