Überprüfen die .NET anwendungen beim start ob .NET vorhanden 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