Überprüfen die .NET anwendungen beim start ob .NET vorhanden ist?
-
theta schrieb:
Warum musst Du das noch genauer wissen?
Ja wäre doch schön das zu wissen, vielleicht könnte ich an meine Anwendung nur das anhängen was sie Braucht. Oder träume ich in falsche richtung?
-
sobald du die eine dll hast fehlt die andere
dann hangelst du dich durch und hast am ende fast alle dll dateien die beim framework eh dabei sind - also installieren lassen und feddich is
-
achjo.
wie findet man es denn heraus welche dlls benötigt werden?
-
garnicht.
es muss einfach das .net framework installiert sein.
-
.Net Framework sind nicht nur ein paar DLLs. Das ist eine Laufzeitumgebung mit virtueller Maschine, Garbage Collection, JIT-Compiler etc.
Um die Eingansfrage zu beantworten: Nein, .Net Applikationen prüfen nicht ob das Framework vorhanden ist, weil solche Applikationen nur VOM Framework gestartet werden können... Anders gesagt, wenn die .NEt Applikation erstmal läuft (was der früheste Punkt ist wo eine solche Überprüfung stattfinden könnte) dann muß das Framework ja schon dagewesen sein um die Applikation zu starten....
-
loks schrieb:
Anders gesagt, wenn die .NEt Applikation erstmal läuft (was der früheste Punkt ist wo eine solche Überprüfung stattfinden könnte) dann muß das Framework ja schon dagewesen sein um die Applikation zu starten....
Mmh, nee, oder?
Ist eine .NET-Applikation zunächst nicht auch ein normales PE?
Ziemlich sicher sogar. Woran sollte Windows denn sofort erkennen, dass es ein .Net Programm ist?
-
Steht wahrscheinlich in den ersten x Byte der Datei oder so
-
Achtung, Spekulation und Halbwissen!
So weit mir bekannt ist befindet sich am Anfang einer ausführbarten Datei für das .Net-Framework ein "unmanaged" Teil (ganz normales PE-Format), der die Laufzeitumgebung startet (VM, JIT-Compiler, etc.). Der eigentlich MSIL-Code befindet sich dann als Resource in dieser Datei.
Aber mal ehrlich, warum sollte sich die Exe dafür interessieren ob das .Net-Framework installiert ist oder nicht? Wenn es nicht installiert ist crasht das Programm einfach, wenn doch, auch gut.
-
O.o schrieb:
Wenn es nicht installiert ist crasht das Programm einfach, wenn doch, auch gut.
Nö, muss es dann eben nicht.
Ich hab das nämlich auch so wie du in Erinnerung, dass erst ein "unmanaged" Teil kommt und dieser durchaus in der Lage ist eine Meldung ".NET x.y required" auszugeben.
-
Jockelx schrieb:
O.o schrieb:
Wenn es nicht installiert ist crasht das Programm einfach, wenn doch, auch gut.
Nö, muss es dann eben nicht.
Ich hab das nämlich auch so wie du in Erinnerung, dass erst ein "unmanaged" Teil kommt und dieser durchaus in der Lage ist eine Meldung ".NET x.y required" auszugeben.Das wäre doch viel zu einfach!
-
Ich hatte ein änliches Problem bzw. Ziel: http://www.c-plusplus.net/forum/viewtopic-var-t-is-244197.html.
O.o schrieb:
So weit mir bekannt ist befindet sich am Anfang einer ausführbarten Datei für das .Net-Framework ein "unmanaged" Teil (ganz normales PE-Format), der die Laufzeitumgebung startet (VM, JIT-Compiler, etc.). Der eigentlich MSIL-Code befindet sich dann als Resource in dieser Datei.
Zwar nicht als Resource sondern als data directory aber sonst richtig.
[url=http://books.google.de/books?id=50PhgS8vjhwC&pg=PA320&lpg=PA320&source=bl&ots=vYJu_kx2nQ&sig=umepZs4oECa5_Gx1Plodng3Lv4Q&hl=de&ei=x9KbSqPPEsKG_AaK9pWoBQ&sa=X&oi=book_result&ct=result&resnum=3#v=onepage&q=&f=false]The common language infrastructure annotated standard
Von James S. Miller, Susann Ragsdale[/url]
Laut depends.exe das solch ein Programm nur _CorExeMain von mscoree.dll auf.O.o schrieb:
Aber mal ehrlich, warum sollte sich die Exe dafür interessieren ob das .Net-Framework installiert ist oder nicht? Wenn es nicht installiert ist crasht das Programm einfach, wenn doch, auch gut.
Das sieht dann aber nicht so gut aus, wenn ein Programm crashed oder eine unverständliche Fehlermeldung abwirft.
-
Naja...
Man könnte einen eigenen "loader" schreiben.
Der "loader" ist dabei ein ganz normales Win32 Programm.
Der kann erstmal (wie auch immer) checken, ob das .NET Framework installiert ist (und ggf. eine hübsche Fehlermeldung anzeigen).Falls das .NET Framework installiert ist, kann der "loader" dann einfach eine .NET DLL laden (mittels LoadLibrary), und eine darin definierte Funktion ausführen. Mit C++/CLI für den .NET Teil geht das recht schön.
-
-
spielehersteller machen das doch auch mit so nem "launcher"
-
theta schrieb:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-244197.html
Äh.
Ein Thread mit Fragen ohne brauchbare Antworten.
Und?
-
hustbaer schrieb:
theta schrieb:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-244197.html
Äh.
Ein Thread mit Fragen ohne brauchbare Antworten.
Und?Wollte eigentlich nur darauf hinweisen, dass mein letzer Post in dem Thread auf dasselbe abgezielt hat, wie Du oben beschrieben hast.
Simon