![]() |
msxml deinstallieren
Hallo zusammen,
weiss jemand, wie man alle! msxml Versionen des Rechners (oder eine bestimmte) deinstalliert und überprüfen kann was noch auf dem Rechner ist? Habe mit regsvr32 -u msxml usw. alle Versionen incl. 4 deaktiviert, aber meine App transformiert noch immer (unter system32 sind noch die beiden Dateien von msxml3 die sich nicht löschen lassen). Ich möchte meine Exception-Behandlung testen... Grüße xml99 |
Re: msxml deinstallieren
Wäre es nicht einfacher, du testest das auf dem Rechner eines Bekannten, der kein XML installiert hat? Überhaupt, was meinst du mit Exception-Behandlung? Gucken ob es installiert ist? Dazu brauchst du keine Exception. ;)
|
Re: msxml deinstallieren
Hi,
gute Idee mit einem Rechner zu probieren, der kein msxml hat. Aber wird das nicht immer installiert, wenn IE auf dem Rechner ist?Zudem würde ich nmeine App gerne debuggen, um zu sehen, wo es "knallt". Exception-Handling? Wenn kein msxml installiert ist, dann sollte jede Anweisung ein xml mit einem xsl-Stylesheet zu transformieren zu einem raise führen. Was gibt der aus, kann ich das verwerten, kann ich den Fehler richtig abfangen,...? Ich weiss, die meisten wollen das es funktioniert. Das ist ja meistens auch so, aber leider in Ausnahmen auch mal anders. Und dann? Grüße xml99 |
Re: msxml deinstallieren
Ich persönlich prüfe die Existenz von MS-XML mit einer speziellen Funktion gleich zu Beginn. Wird nicht die erwartete Version gefunden, beendet sich das Programm. Bei einem VCL-Projekt ist diese Funktion am besten im Projektquelltext (*.dpr) aufgehoben, noch bevor die ersten Forms geladen werden. In der DP treibt sich noch eine Funktion [dp]"DoesXmlExist"[/dp] rum (auch von mir), aber mittlerweile benutze ich die hier:
Delphi-Quellcode:
weil sie flexibler ist und nicht nur nach XML suchen kann. Aber für XML 4 würde es so aussehen:
function DoesObjectExist(const ClassID: TGUID): boolean;
function GuidToString(const ClassID: TGUID): string; var p : PWideChar; begin Result := ''; if(Succeeded(StringFromCLSID(ClassID,p))) then begin Result := p; CoTaskMemFree(p); end; end; function ExpandEnvStr(const szInput: string): string; const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))); end; var reg : HKEY; dwType, dwLen : dword; s : string; begin Result := false; if(RegOpenKeyEx(HKEY_CLASSES_ROOT,pchar('CLSID\' + GuidToString(ClassID) + '\InProcServer32'), 0,KEY_READ,reg) = ERROR_SUCCESS) then try dwType := REG_NONE; dwLen := 0; if(RegQueryValueEx(reg,nil,nil,@dwType,nil,@dwLen) = ERROR_SUCCESS) and (dwType in [REG_SZ,REG_EXPAND_SZ]) and (dwLen > 0) then begin SetLength(s,dwLen); if(RegQueryValueEx(reg,nil,nil,@dwType,@s[1],@dwLen) = ERROR_SUCCESS) then SetLength(s,dwLen-1) else s := ''; Result := (s <> '') and (fileexists(ExpandEnvStr(s))); end; finally RegCloseKey(reg); end; end;
Delphi-Quellcode:
Wie gesagt, klappt nicht nur bei XML. Auch beim Help 2.0-Environment
if(not DoesObjectExist(CLASS_DOMDocument40)) then
begin MessageBox(0,'XML 3 wird benötigt.',nil,MB_OK or MB_ICONEXCLAMATION); exit; end;
Delphi-Quellcode:
if(not DoesObjectExist(CLASS_HxSession)) then
Halt(3); |
Re: msxml deinstallieren
Hi Mathias,
super die Source! Danke. Ich habe aber ein akutes Problem, dass trotz installiertem msxml4 die Transformation scheitert (auf meinem 2.ten Rechner). Ich habe schon alles probiert... alles mit regsvr32 deaktivieren, msxml3, dann msxml4 neu installieren... nix. Jetzt ist mein Wunsch, auf dem 1.ten Rechner es mal ohne msxml testen zu können, um auf dem 2.ten (da kann ich keine IDE installieren) besser klar zu kommen. Oder hast Du eine Idee, warum bei gleichem BS (XP) und installiertem msxml3, msxml4 und gleichem Programm (aus der gleichen Source) die Transformation scheitern kann? Jeder Tipp könnte mir helfen. Grüße xml99 |
Re: msxml deinstallieren
Nee, habe ich leider nicht. Wundert mich auch. Unterscheidet die Rechner irgendwas von einander? Oder ist auf beiden XML 3 und 4 drauf?
|
Re: msxml deinstallieren
Tja, das ist das Seltsame, auf beiden habe ich frisch msxml3 und 4 installiert in der gleichen Reihenfolge. Beide haben gleiches BS und Servicepack.
Deshalb auch die Idee alles zu deinstallieren (msxml meine ich) und dann von vorne beginnen. Muss denn zu msxml noch was installiert sein, damit ein xslt funktioniert? Eine dll? Oder was anderes? Sehe immer nur die Dateien "msxml3.dll", "msxml3r.dll" und das gleiche für 4. In der Registry ein bestimmer Eintrag? Grüße xml99 |
Re: msxml deinstallieren
An wie viel Stellen diskutiert ihr denn jatzt das xslt Thema? Benutzt doch bitte den Thread der extra dafür aufgemacht wurde. Danke.
|
Re: msxml deinstallieren
Nee, das macht ja die Installation von XML automatisch. Aber die Frage nach dem Servicepack im anderen Beitrag bezog sich auf das aktuelle XML Servicepack. Ich weiß gar nicht, ... bei 3 ist glaube ich das SP5-Paket erhältlich. Bei XML 4 ist es noch das SP2. Das ist auch bloß noch mal das komplette XML-Paket, bloß eben aktuell.
Ich habe mich gerade für den entschieden, @Luckie. Vllt. könnte der Beitragersteller, wenn es eh das gleiche Thema ist, diesen Beitrag hier umbenennen und euch (dich) auffordern, den anderen Beitrag zu entsorgen? |
Re: msxml deinstallieren
@Michael,
ich wollte eigentlich das Thema Deinstallation von dem Problem 2ter Rechner trennen. Wenn Du meinst, kann der andere Thread gelöscht werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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