C# Starterapplikation in C++ (Prüfung auf .NET)
-
Hallo zusammen,
ich schreibe gerade ein Programm in C#. Da man für die Ausführung von C#-Programmen ja das .NET Framework benötigt, schreibe ich ein kurzes Programm in C++ das die installierte .NET-Version überprüft (anhand der Registry-Einträge) und dann mein C#-Programm startet (ShellExecute).Es geht mir hauptsächlich darum, dass das Programm Bescheid gibt, dass das .NET-Framework fehlt wenn es nicht installiert ist, anstatt einfach nur nicht zu starten. Darum das Programm in C++.
Das funktioniert soweit ja auch, aber jetzt habe ich mir überlegt wie es wohl mit zukünftigen versionen von .NET aussieht? Wenn ich einfach nur prüfe ob die MOMENTAN (zum Zeitpunkt der Programmierung) aktuelle version von .NET installiert ist, könnte das in Zukunft ja Probleme geben, wenn jemand nur die DANN aktuelle version installiert hat.
Kann mir jemand weiterhelfen wie man sowas gewöhnlich regelt? Es geht mir halt um Kompatibilität zu zukünftigen .NET-versionen.
Ich hoffe das ist das richtige Forum dafür.
Viele Grüße,
Daniel
-
fr3yr schrieb:
Kann mir jemand weiterhelfen wie man sowas gewöhnlich regelt? Es geht mir halt um Kompatibilität zu zukünftigen .NET-versionen.
Wie soll das deiner Meinung nach funktionieren? .NET ist nicht gleich .NET, es gibt mindestens 3 Versionsbereiche die unabhängig voneinander sind:
- 1.0-1.1
- 2.0-3.5
- 4.0-4.5.1
Ein .NET-Programm das beispielsweise für .NET 3.0 geschrieben wurde, sollte auch mit 3.5 laufen, nicht aber mit 4.0. Daher ist es durchaus möglich das man 3 voneinander unabhängige .NET Versionen vorfindet.
Und 4.5.1 ist sogar noch ein Sonderfall, es ersetzt 4.5, kann aber tatsächlich in besonderen Fällen Probleme bei Programmen machen die für 4.5 geschrieben wurden sind (Ich kann dir nicht die genauen Problemfälle nennen, da müsstest du googeln).
Sprich: Solange du nicht weißt, ob das neuere Framework mit dem verwendeten kompatibel ist, nützt dir eine Überprüfung gegen neue Versionen auch nichts. Zudem hat Microsoft versäumt eine Funktion anzubieten um schlicht die einfache Frage zu beantworten, ob eine passende (nicht unbedingt genau diese) Version für ein konkretes .NET Programm vorhanden ist.
-
fr3yr schrieb:
Das funktioniert soweit ja auch ...
Ich würde darauf Wetten, dass Du eine ganze Reihe von Sonderfällen und Konfigurationen vergessen hast. Es ist nicht-trivial die installierten Versionen zu prüfen, insbesondere wenn es zuvor z.B. zu unvollständigen Deinstallationen kam.
Gibt ein kleines Tool mit dem die Leute ihre Version prüfen können:
http://www.asoft.be/prod_netver.html
Es prüft Registry-Einträge, Verzeichnisse im Win-Ordner und sogar Versionen der mscorlib-Assembly für eine zuverlässige Aussage.
-
Zudem hat Microsoft versäumt eine Funktion anzubieten um schlicht die einfache Frage zu beantworten, ob eine passende (nicht unbedingt genau diese) Version für ein konkretes .NET Programm vorhanden ist.
Ok, danke, habe gedacht, dass es da in der Richtung etwas eleganteres gibt.
Mir ist durchaus bewusst, dass ich mti meiner bisherigen Lösung nicht alle Eventualitäten abdecken werde.
Die Frage ist nur, wie löst man soetwas denn dann professionell?
Ich würde also am besten zu meinem Programm dazuschreiben, dass für dieses Programm die .NET-Version ... benötigt wird, würde dann einfach nur auf diese eine Version prüfen und gebe immer einen Fehler wenn diese eine Version nicht installiert ist?Ich nehme mal an, standardmäßig würde man so eine Prüfung in einer Art Install-Wizard vornehmen und direkt eine distributable vom jeweiligen .NET dazulegen.
Vielen Dank soweit schonmal.
-
fr3yr schrieb:
Die Frage ist nur, wie löst man soetwas denn dann professionell?
Ich würde also am besten zu meinem Programm dazuschreiben, dass für dieses Programm die .NET-Version ... benötigt wird, würde dann einfach nur auf diese eine Version prüfen und gebe immer einen Fehler wenn diese eine Version nicht installiert ist?Welche Version benötigt Dein Programm denn? Es gibt auch Mindestversionen die mit jedem Win ausgeliefert werden und die man einfach voraussetzen kann.
Wir prüfen schon eine ganze Weile garnichts mehr und führen die NET-Version in den Mindestvoraussetzungen auf. Der letzte Fall, dass ein Kunde nicht das passende Framework auf seiner Kiste hatte und sich an den Support wenden musste, liegt 1-2 Jahre zurück. Ein Einzelfall unter tausenden Installationen, wobei wir für Standardsoftware bisher "nur" 3.5 mit Service-Pack 1 voraussetzen. Das aktuelle Projekt benötigt 4.5, wird aber nur auf wenigen PCs eingesetzt.