Ahh, jetzt habe im
SDK verschiedene ProgIDs für die gleiche Klasse gefunden. Anscheinend gibt es für ältere Interfaces verschiedene IDs für das gleiche Objekt. Eine trug dabei die Versionsnummer und die andere nicht (ProgIDs). So gibt es beispielsweise aus der MSXML3.0 ein "MSXML2.DOMDocument" und ein "MSXML2.DOMDocument.3.0". Offenbar kann man mit letzterer explizit die Version festlegen (was passiert mit "MSXML2.Document.2.6" wenn MSXML3 installiert wurde, daß ja anscheinend die alten Versionen überschrieben hat?) und erstere benutzt die Standard-Implementierung (die aktuellste im System registrierte).
Bei der Dokumentation zum MSXML4 fehlen die Angaben der Versionslosen Interfaces. Anscheinend ist es weiterhin das gleiche Schema (z.B. "Msxml2.DOMDocument.4.0"), aber
MSXML registriert nicht mehr die generischen (versionslosen) Interfaces sondern überlässt sie den Vorgängern (MSXML3).
Zitat von
MathiasSimmack:
XML 4 dagegen registriert sich wohl ein eigenes Interface, das unabhängig von den Vorversionen ist.
Also müsste MSXML4 auch automatisch MSXML3 mitinstallieren, damit alte Anwendungen weiterhin laufen (sofern MSXML3 nicht schon auf dem System vorhanden ist), wenn meine obigen Vermutungen stimmen.
Demnach müsste es eigentlich genügen, wenn ich mein Objekt über die
GUID von "MSXML2.DOMDocument" erzeuge, ohne irgendwelche Interfaceversion dahinter. Oder hab' ich was übersehen?
Zitat von
MathiasSimmack:
Es gibt mittlerweile 4 Servicepacks für
XML 3 und 2 für
XML 4. Nicht mitgezählt die kleinen Patches. Da würde ich dann eine halbwegs aktuelle Version vorziehen, und ich würde den Anwender dann auch dazu "zwingen" (oder sagen wir: nachdrücklich bitten), eine aktuelle Version zu verwenden.
Es ist kein sicherheitsrelevantes Programm, im Prinzip ist eine
XML-Datei auch schon mehr als Overkill für den Anwendungszweck. Wenn also ein kleiner Fehler in der Bibliothek ist, wäre das nicht schlimm; hauptsache er liest die Daten, die ich brauche, korrekt ein (und so ausgefallen oder komplex ist die Syntax der
XML-Dokumente nicht).
Andernfalls würde ich dir natürlich zustimmen und auch die MSXML4 benutzen, wenn die Dateien mehrere Megabyte groß wären und Gebrauch von Schemas, DTDs und sonstigem Getier machen würden.