Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi msxml deinstallieren (https://www.delphipraxis.net/39449-msxml-deinstallieren.html)

xml99 2. Feb 2005 21:16


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

MathiasSimmack 2. Feb 2005 21:18

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. ;)

xml99 2. Feb 2005 21:24

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

MathiasSimmack 2. Feb 2005 21:31

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:
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;
weil sie flexibler ist und nicht nur nach XML suchen kann. Aber für XML 4 würde es so aussehen:
Delphi-Quellcode:
  if(not DoesObjectExist(CLASS_DOMDocument40)) then
  begin
    MessageBox(0,'XML 3 wird benötigt.',nil,MB_OK or MB_ICONEXCLAMATION);
    exit;
  end;
Wie gesagt, klappt nicht nur bei XML. Auch beim Help 2.0-Environment
Delphi-Quellcode:
  if(not DoesObjectExist(CLASS_HxSession)) then
    Halt(3);

xml99 2. Feb 2005 21:40

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

MathiasSimmack 2. Feb 2005 21:44

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?

xml99 2. Feb 2005 21:49

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

Luckie 2. Feb 2005 21:50

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.

MathiasSimmack 2. Feb 2005 21:52

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?

xml99 2. Feb 2005 21:54

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 05:18 Uhr.
Seite 1 von 2  1 2      

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