Ich habe kürzlich versucht, eine C # -Anwendung auf einem Computer bereitzustellen, auf dem .NET nicht installiert ist.
Ich weiß, dass es in StackOverflow viele Fragen zum selben Thema gab. Hier sind ein paar von ihnen, von denen ich die Antworten auf alle gelesen habe:
Das .NET Framework mit einem. Net-Anwendungsbereitstellung
Führen Sie eine .net-Anwendung aus, ohne das .net-Clientprofil zu installieren ?
Führen Sie C # Windows-Anwendung in Windows XP ohne .NET Framework zu installieren
Alle Antworten auf die obigen Fragen geben also an, dass es ohne spezielle Software usw. unmöglich ist. Eine erwähnte Software war die Salamander .NET Linker . Das einzige Problem dabei ist, dass ich die Anwendung nicht mehr ausführen kann, nachdem sie von Salamender verarbeitet wurde. Ich verstehe, dass dies an sich nicht möglich ist, da die virtuelle .NET-Maschine ausgeführt werden muss. In der Vergangenheit habe ich Java-Anwendungen entwickelt und mit ihnen die gesamte JVM ausgeliefert. Überraschenderweise funktionierten sie immer noch. Der Grund, warum dies kein Duplikat der obigen Fragen ist, ist, weil meine wahre Frage lautet:
Welche Elemente des .NET-Frameworks muss ich packen? Wenn ich es schaffe, alle zu packen, würde ich sie im selben Verzeichnis wie die Anwendung installieren, die ich ausführe, damit die Anwendung ausgeführt werden kann?
Ich habe eine Lösung gefunden, das Microsoft .NET Redist-Paket . Das einzige Problem dabei ist, dass es eine eigene GUI hat. Abgesehen davon wäre es eine perfekte Passform. Also, könnte mir jemand eines von zwei Dingen sagen:
Gibt es ein Befehlszeilen-.NET-Paket, und wenn ja, wo kann ich es herunterladen?
Wenn es nicht oder nicht praktikabel ist, welche Verzeichnisse müsste ich aus den .NET-Installationen kopieren?
Ich verstehe, dass diese Dateien und Verzeichnisse systemspezifisch sind und dass meine .NET-Installation möglicherweise nicht auf Ihrem Computer funktioniert, aber wenn C # wie Java ist, sollte dies erreichbar sein. Ist es? Die Größe ist keine Einschränkung, es ist mir egal, ob die Anwendung und alle ihre Dateien 1 GB groß ist oder ob es nur 1 MB ist.
Wenn es keine andere Lösung gibt, habe ich Dependency Walker verwendet, um alle Abhängigkeiten meines Programms zu überprüfen. Wenn ich die meisten von ihnen verpacken würde, würde meine Bewerbung theoretisch funktionieren?
Für .NET müssen Sie einfach das entsprechende .NET Framework installieren. Die .NET-Framework-Installation enthält Befehlszeilenoptionen für unbeaufsichtigte Installationen wie:
%Vor%Details zu den Befehlszeilenoptionen finden Sie in den Optionen für 3.5 und für .NET 4.0 .
Die meisten Installationspakete werden diese Details für Sie als Teil der Installation behandeln. Mit einem anständigen Installer wird diese Abhängigkeit automatisch behoben.
Abhängig von den Teilen von .NET Framework, die Sie benötigen, können Sie Mono verwenden. Es unterstützt den Versand der Runtime ohne Installation wie bei einer JVM, oder Sie können die Binaries statisch verknüpfen, um eine native ausführbare Datei zu erstellen.
Wenn Sie Ihre Anwendung bereitstellen möchten (und davon ausgehen, dass der Installationsprozess nicht zu komplex sein muss), können Sie einfach ein Installieren Sie das Projekt in Visual Studio und starten Sie anschließend die erforderlichen Komponenten (.NET-Framework und andere Dinge, die Sie möglicherweise benötigen).
Sie können die in diesen MSDN-Artikeln beschriebenen Schritte ausführen:
Eine Anleitung ist in diesem CodeProject Artikel gegeben >.
Bei komplexeren Bereitstellungsszenarien (z. B. Installieren von Gerätetreibern in Ihrer App oder besserer Lokalisierungsunterstützung) würde ich empfehlen, sich WiX (Windows Installer XML) Toolset . Es ist ein Toolset, das Windows-Installationspakete erstellt, die Sie mithilfe von XML-Dateien in Visual Studio konfigurieren. WiX unterstützt auch verschiedene Bootstrapping-Szenarien .
Diese Seite behandelt die Unterschiede zwischen VS-Setup-Projekten, WiX und InstallShield.
Tags und Links .net c# redistributable