Ich habe kürzlich gefragt wenn Sie von der Anwendung erkennen können, ob .NET installiert ist (damit die Anwendung nicht mit einem allgemeinen Ausnahmefehler abstürzt).
Die Antwort scheint ein einfaches "Nein" zu sein. Ich möchte immer noch in der Lage sein, elegant zu beenden, wenn .NET nicht installiert ist, gibt es eine Möglichkeit, dies zu tun?
Denken Sie daran, dass ich den Namen der ausführbaren Datei nicht ändern möchte. Das heißt, es ist in Ordnung, eine nicht verwaltete ausführbare Datei zu verwenden, die das eigentliche .NET-Programm ausführt, aber keine ausführbaren Dateien benötigt.
Bearbeiten: Ich meine nicht, dass ich vom Installer scheitern muss, es gibt überhaupt kein Installationsprogramm, nur die ausführbare Datei. Natürlich ist es sehr unwahrscheinlich, dass dies passiert, aber trotzdem möchte ich es trotzdem überprüfen können.
Sie haben zwei verschiedene Optionen:
ODER
Und natürlich könnten Sie beide für das Beste aus beiden Welten kombinieren.
Sie könnten eine native Anwendung schreiben, die auf .NET-Existenz prüft. Dann müssen Sie die verwaltete DLL mit LoadLibrary laden und eine Funktion darin aufrufen (GetProcAddress), die Ihre .Net-Anwendung startet.
Ich denke, Sie müssen sich auch mit der .NET-DLL herumschlagen, um Ihre Hauptfunktion aus nicht verwaltetem Code sichtbar und aufrufbar zu machen. Es wird als inverse PInvoke bezeichnet.
Was Sie tun können, ist das Schreiben Ihres .NET-Erkennungscodes in natives Win32 C / C ++, es macht die Erkennung, zeigt einige benutzerfreundliche Fehlermeldung oder was auch immer Sie meinen, fallend oder ruft die .NET-DLL auf, wenn es ein entsprechendes gibt Framework verfügbar. Wenn Sie nicht zwei ausführbare Dateien haben möchten, speichern Sie einfach die Bytes der DLL in Ihrer nativen ausführbaren Datei und laden Sie sie dynamisch.
Beachten Sie, dass diese Vorgehensweise es völlig unmöglich macht, Ihre Anwendung mit Mono auszuführen.
Stellen Sie einfach eine nette Nachricht Box, dass es nicht installiert ist und bieten an, es herunterzuladen. Die meisten Installateure erlauben Ihnen, dies trotzdem zu tun.
Tags und Links .net