.Net Anwendung als Native App (ohne .NET runtime)



  • Hallo Community,

    ich möchte gerne eine .Net Applikation als Native Applikation (exe) haben, ohne dass ich das .NET framework bzw. Runtime installieren muss. (Quasi stand-alone OnClick Ausführung auf Windows PCs)

    Ich bin dann auf .NET Native gestoßen, und frage Euch mich ob das die Lösung ist?

    https://docs.microsoft.com/de-de/dotnet/framework/net-native/

    Danke für Euere Hilfe.



  • Vermutlich: ja.
    Aber ... probier's doch einfach aus?



  • Ja ich probiere da rum , aber wie es aussieht, geht es nur ab Windows 10 (UWP). 😢
    Ich würde gern eine WPF Anwendung auch auf Win7 laufen lassen können.. gibts Möglichkeiten?



  • Ich kenne keine solche Möglichkeit. Also wenn es mit .NET Native nicht geht. (Was nicht heisst dass es keine Möglichkeit gibt.)



  • @sointman sagte in .Net Anwendung als Native App (ohne .NET runtime):

    Ja ich probiere da rum , aber wie es aussieht, geht es nur ab Windows 10 (UWP). 😢
    Ich würde gern eine WPF Anwendung auch auf Win7 laufen lassen können.. gibts Möglichkeiten?

    Wohl nur durch die installation der passenden .Net Version auf dem Win7 Rechner.
    Das machen auch andere Programme wie z.b. Visual Studio bei der installation, dass die passenden .Net version installiert wird, wenn sie nicht vorhanden ist.
    Und WPF existiert schon seit Windows 7 daher sollte es laufen. Und .Net 4.5 gibt es auch für Win7. Wird auch über windows update verteilt (All optionales update), wenn die option "updates für microsoft produkte" aktiv ist (eventuell auch ohne die option, das weis ich nicht genau)



  • Achso, ja, natürlich läuft WPF auch auf Windows 7. Ich bin davon ausgegangen dass die Anforderung "ohne dass ich das .NET framework bzw. Runtime installieren muss" bestehen bleibt.



  • ILMerge sollte funktionieren.
    Und in Verbindung mit "ngen" hast du dann auch eine vorkompilierte EXE.

    Edit: Unter ILMerge-GUI gibt es auch eine UI zu dem Tool.



  • Anmerkung .Net 3.5 ist in Windows 7 enthalten. Und WPF gibt es seit .Net 3.0
    Die frage ist braucht dein tool unbedingt eine .Net Version > 3.5?
    Wenn nicht dann mal in den projekt-einstellungen das target framework auf 3.5 setzen und neu übersetzten, dann sollte es auch auf windows 7 out of the box laufen


  • Administrator

    Siehe auch den Artikel auf der MSDN, welche .Net Framework Version auf welcher Windows Version bereits installiert ist:
    https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies



  • Guten Morgen,

    danke für Euer Feedback und Engagement:) Ja Ihr habt definitiv Recht. Das Problem ist dass ich noch nicht weise Welche Windows Plattform betrieben wird. Vll. auch WinXP .. aber das muss ich noch prüfen.

    Die Idee war einfach diese, dass die Awendung (exe) nur kopiert werden muss und gestartet werden kann, ohne dass ich mich um Framework und Versionen kümmern muss (mal ganz lapidar gesprochen).

    Mal angenommen, die .NET Lösung wird nicht akzeotiert, und man müsste die Anwendung nativ umsetzen, dann würde ich (nach paar Recherchen) C++ Qt nehmen.. was meint Ihr. Oder gilt Hier das gleiche Problem? Wäre das dann "komplett" Windows unabhängig ? 🙂

    Vielen Dank



  • ngen: jitted den Code in deiner Applikationen bereits zur compile-time, das heißt aber nicht, dass alle Abhängigkeiten (also bspw. das .NET Framework) mitcompiliert werden. Die liegen im GAC (tw. auch vorcompiliert) aber werden weiterhin benötigt. Außerdem: wenn du mit ngen für eine Plattform compiliert hast und du führst das Ding auf einer anderen aus wird ebenfalls nochmals gejitted. Also .NET Framework weiterhin zwingend notwendig am Rechner.

    .NET Native: Nur für Windows 10. Da geht's darum, dass Apps im Store schneller laden weil sie bereits vorcompiliert wurden. Hier wird tatsächlich aber das .NET Framework statisch dazugelinkt, d.h., es wäre nicht mehr notwendig. Wobei auf Windows 10 sowieso - allermindestens, wenn noch im "vanilla" Zustand, .NET 4.6 sowieso dabei ist.

    .NET Core-Anwendungen: können ihr eignees Framework mitbringen, da funktioniert einfaches Copy&Paste Deployment wenn du möchtest. Gibt aber noch keinen Zugriff auf WPF, weiß nicht, ob das für dich eine Notwendigkeit ist. Evtl. kannst du ja auch als ASP.NET Core-Web-Anwendung mit lokalem Server eine UI basteln?

    Ansonsten kannst du auf jeder supported Windows-Plattform (Windows 7 SP 1 ist die älteste davon), davon ausgehen, dass du zumindest .NET Framework 4 zur Verfügung hast wenn der User brav Updates einspielt. Im allerschlimmsten Fall, bei einem ungepatchten Windows 7 hast du 3.5, auch hier gibt es schon WPF.

    Bzgl. QT: du kannst QT tatsächlich statisch linken und so eine einzelne Exe erhalten, siehe https://wiki.qt.io/Build_Standalone_Qt_Application_for_Windows

    MfG SideWinder

    PS: In Zeiten von Installern ist das Copy&PAste-Deployment eigentlich unter Windows nicht mehr so wichtig. Gibt es eine besondere Anforderung warum es eine einzelne Exe sein muss?



  • Aber auch C++ Programme (zumindestens mit dem MSVC kompilierte) benötigen standardmäßig eine Runtime-DLL, welche mitgeliefert oder separat installiert werden muß. Mittels Projektoptionen kann man aber auch diese statisch linken.

    Und beim statischen Linken von QT beachte die LGPL-Lizenz: Qt - Obligations of the LGPL, s.a. static linking Qt with open source version.



  • Hey Super:)

    Ich Danke Euch für die Kompetenten Ausführung, hat mir echt sehr weiter geholfen👍🏼 👍🏼