Laden...

Selbstlaufende .exe erstellen? [selbstlaufend = ausführbar ohne .NET Framework]

Letzter Beitrag vor 18 Jahren 36 Posts 26.178 Views
Information von herbivore vor 18 Jahren

Dies ist ein Thread, auf den aus der FAQ verwiesen wird. Bitte keine weitere Diskussion, sondern nur wichtige Ergänzungen und diese bitte knapp und präzise. Vielen Dank!

Selbstlaufende .exe erstellen? [selbstlaufend = ausführbar ohne .NET Framework]

Hallo 🙂

Ich habe eine Art MatheProgramm mit VS Prof. 2003 geschrieben und möchte das Ganze jetzt aber gerne an PCs verwenden können ohne Framework 1.1 etc...

Wie kann ich das Programm in VS zu einer selbstlaufenden .exe umwandeln ? Oder geht das garnich ? Zwar ist nach dem kompilieren immer eine .exe im \bin folder, aber die läuft leider nicht auf PCs ohne .Net Framework.

Danke

towanda

Forumsuche hilft: c# ohne framework

Ich glaube mich an ein Cannel9 Video zu erinnern, wo der
Interviewer (Charles) gegenüber den Entwicklern erwähnte, das das
Framework einfach zu groß sei.

Ein Net Entwickler meinte :"Es sei etwas in Entwicklung, aber noch zu
früh für eine Ankündigung!"

Scheint also doch ein "Problem" zu sein....

Meli

Gernot Melichar

Hallo Meli,

siehe Vergleich mit DirectX .exe hertsellen

Außerdem werden Internet-Verbindungen immer schneller.

Und dann wird die Runtime mit zukünftigen Windows-Versionen gleich mit ausgeliefert.

Ich sehe da also wirklich kein Problem.

herbivore

Außerdem benötigt man das .NET Framework nicht um .NET Anwendungen auszuführen. Man benötigt die Runtime, dass ist ein ziemlicher Größenunterschied.

Ja, ist mir alles bekannt. 😉
Ich selbst habe auch kein Problem damit und spätestens mit
Windows Vista hat sich das alles sowieso erledigt.

Ich wollte nur auf dieses Statement der Net-Entwickler hinweisen.

Meli

Gernot Melichar

Warum fragen alle Leute nach einer Möglichkeit ihre .NET Programme ohne .NET auszuführen. Das wäre ja als wenn ich ein Windowsprogramm ohne Windows ausführen möchte. .NET hat nicht umsonst die Bezeichnung "Platform".

Ich glaube ihnen ist nicht bewusst was .Net wirklich ist sie denken das C# eine Sprache wie C++ ist in der man Programme ohne irgendwelche Voraussetzungen zu erfüllen auf einen anderen Computer übertragen kann (mir ist schon bewusst das es lange nicht so einfach ist)

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

Also ich finde es auch dumm, dass man bei c# dazu gezwungen ist, die Runtime zu installieren. Dies ist bei VB genauso. Leider kann man mit dieser Sprache keine kleinen, schlanken programme schreiben. Microsoft ist der Monopolist und meint, dass die Zukunft in den Runtimes liegt. Wir müssen uns beugen.

Ich hab aber vor kurzem einen Prelinker für .NET Programme im internet entdeckt. Leider habe ich keinen link aber suche doch mal. Mit ihm soll es möglich sein, benötigte funktionen der .NET Runtime in die .exe zu packen und dann die .exe ohne runtime zu starten.

Suche mal und poste hier her den link

warum soll das "dumm" sein?

microsoft ist nicht der einzige, java braucht das auch 🙂 damit c++ programme auf anderen systemen läuft, muss man das auch anders kompilieren etc.

du musst die vorteile darin sehen! gibt es eine andere sprache, in dem man so einfach wie in .net eine klasse mit vb schreiben kann, und mit c# problemlos ansprechen? das runtime erleichtert die programmierung extrem. wenn dir das nicht passt, probiers mal mit einer anderen programmiersprache, dann siehst du, wie komfortabel .NET ist.

Aber bei Java macht es auch richtig sinn. Die Javaprogramme sind Plattformunabhängig. Sie laufen ohne neukompilierung auf jedem Rechner, auf jedem Handy und auf jedem Betriebssystem. Und das ist ein echter Grund für ein Runtime Environment.
Aber bei c#? Ne. Bei c++ muss man auch keine Programme neu kompilieren, solange man unter demselben betriebssystem bleibt und bei Delphi auch nicht.

Was wäre, wenn du ein Programm zur Kundenbefragung schreiben willst. Dieses Programm hat einfach nur eine Form 5 buttons und es ist 4 Seite c#-Code.

Jetzt schickst du es mal den 1000 Kunden zu und sie sollen darauf rumklicken und die Fragen beantworten.

Wieviele Kunden werden wohl dieses Miniprogramm verwenden, wenn sie zusätzlich zu den 30kb exe-File noch 200MB Runtime runterladen müssen?
Wieviele Kunden sind wohl zu dumm dazu, das runtime zu installieren?
Und bei wievielen der 1000 Kunden ist danach wohl der Rechner im Arsch, weil die .NET installiert haben?
Wieviele Kunden werden wohl die 20min runtime installation für so ein kleines mini-Frageprogramm in Kauf nehmen?

So ein Runtime hat auch gravierende Nachteile. Bis jetzt ist es ja nur pseudoPlattformunabhängig und später, wenn es die winApiCalls gibt, dann sind die Programme wohl garnicht mehr plattformunabhängig, weil man sie doch von win98-winxp auf allen Betriebssystemen testen muss

Die Runtime ist nicht 200MB und Java ist eine eigene Plattform genauso wie .NET ( da hinkt es mit der Plattformunabhängigkeit ).

Und wer ist daran wohl schuld?

Ausser Microsoft niemand

Ausserdem, was ändert es daran, dass eine Runtime scheisse ist?

An was? Das die Runtime nicht 200 MB ist sondern kleiner? Oder das Java und .NET eigene Plattformen sind?

Ausserdem, was ändert es daran, dass eine Runtime scheisse ist?

Es gibt auch andere Sprachen, man muss ja nicht zwingend mit C#/.NET arbeiten.

Wieviele Kunden werden wohl dieses Miniprogramm verwenden, wenn sie zusätzlich zu den 30kb exe-File noch 40MB Runtime runterladen müssen?
Wieviele Kunden sind wohl zu dumm dazu, das runtime zu installieren?
Und bei wievielen der 1000 Kunden ist danach wohl der Rechner im Arsch, weil die .NET installiert haben?
Wieviele Kunden werden wohl die 20min runtime installation für so ein kleines mini-Frageprogramm in Kauf nehmen?

du wirst auch nicht gezwungen, .NET zu verwenden! am besten machst du den doktortitel indem du deine miniapplikation in c++ schreibst. man muss die vorteile nutzen. du siehst keine? dann programmier in einer anderen sprache (wie z.b in deinem fall)

btw: die runtimes sind 25MB gross, die installation geht automatisch.

Wieviele Kunden werden wohl dieses Miniprogramm verwenden, wenn sie zusätzlich zu den 30kb exe-File noch 40MB Runtime runterladen müssen?

25mb

Wieviele Kunden sind wohl zu dumm dazu, das runtime zu installieren?

ist vollautomatisch

Und bei wievielen der 1000 Kunden ist danach wohl der Rechner im Arsch, weil die .NET installiert haben?

warum soll es den computer zerstören?

Wieviele Kunden werden wohl die 20min runtime installation für so ein kleines mini-Frageprogramm in Kauf nehmen?

nicht alle 🙂

Original von .unreal

Wieviele Kunden werden wohl dieses Miniprogramm verwenden, wenn sie zusätzlich zu den 30kb exe-File noch 40MB Runtime runterladen müssen?
25mb

Wieviele Kunden sind wohl zu dumm dazu, das runtime zu installieren?
ist vollautomatisch
wieviele Kunden sind wohl dazu zu dumm?

Und bei wievielen der 1000 Kunden ist danach wohl der Rechner im Arsch, weil die .NET installiert haben?
warum soll es den computer zerstören?
warum soll es einwandfrei auf jedem Rechner auf der Ganzen Welt unter Garantie funktionieren?

Wieviele Kunden werden wohl die 20min runtime installation für so ein kleines mini-Frageprogramm in Kauf nehmen?
nicht alle 🙂

Hallo,
ich verstehe überhaupt nicht die Aufregung. In jedem Buch über .NET steht, dass man die Framework braucht. Auf Windows-Server 2003 und neuen Windows-Versionen soll Framework schon vorinstalliert sein.

Was die Kunden eher stört, dass man 1.0, 1.1 und 2.0 in schlimmsten Fall alle zusammen braucht.

Mit freundlichen Grüssen,
Boris.

Original von boco25
In jedem Buch über .NET steht, dass man die Framework braucht.

Die Runtime reicht aber aus, man braucht also nicht das Framework um
Programme laufen zu lassen.

Original von boco25
Auf Windows-Server 2003 und neuen Windows-Versionen soll Framework schon vorinstalliert sein.

Ich kenne nur 2003 wo das der Fall ist.

Klar die Runtime habe ich gemeint,

Windows-Vista, oder wie die neue Version genannt wird, soll .NET beinhalten.

Das API in Vista wird/soll in .NET implementiert sein, dann ist das Runtime Thema gegessen. Aber es wird noch solang dauern, bis Kunden auf Vista wechseln, dass das auch noch lange ein Thema bleiben wird.

Wie Windows für Microsoft zum Alptraum wurde

Danke, für den Link. Mit der Umstellung kann ich leider nicht widersprechen.

Hallo cmpxchg,

Also ich finde es auch dumm, dass man bei c# dazu gezwungen ist, die Runtime zu installieren. Dies ist bei VB genauso. Leider kann man mit dieser Sprache keine kleinen, schlanken programme schreiben. Microsoft ist der Monopolist und meint, dass die Zukunft in den Runtimes liegt. Wir müssen uns beugen.

ich verstehe ich Aufregung auch nicht. Bei DirectX haben wir die gleiche Situation und sie wird - außer von Unwissenden - nicht ernsthaft in Frage gestellt.

Außerdem läuft kein Programm ohne Runtime. Was meinst du, wie groß die Win32-Runtime ist? Nur ist die ins Betriebssystem integriert. Das wird bei zukünftigen Windowsversionen mit .NET auch der Fall sein. Es geht hier nur um eine Übergangszeit. Die Alternative für MS wäre gewesen, keinen separaten Download anzubieten, sondern zu warten, bis .NET in Windows Vista integriert ist. Das wäre für uns alle ein Zeitverlust von ein paar Jahren gewesen - nur wegen einer völlig schrägen Argumentation.

Und das Argument mit den 30KB Programmen und dem 200MB Download (der ja nur ein 25MB Download ist) kann ich auch nicht mehr hören, weil es ja völlig verkennt, dass man nur beim ersten .NET-Programm den 25MB Download machen muss und dann alle weiteren 30KB Programme nur einen 30KB Download erfordern. Irgendwann wird also die Summe der heruntergeladenen .NET-Programme größer als die Runtime (es sind ja nicht immer nur 30kb).

herbivore

Ich frage mich wirklich warum ich bei einem 30KB Programm .NET benötige. Das macht man doch in Assembler. LOL

word @herbivore!

ich mag diese "Microsoft ist scheisse"-brüller überhaupt nicht...

Das stimmt die Leute die MS ist Schei*** brüllen machen das meist ohne wirklich nach zu denken natürlich kann man darüber streiten ob dieser oder jene schritt das richtige ist aber was .NET betrifft ist doch wirklich zu sagen das MS im großen und ganzen eigentlich kaum Fehler gemacht hat (auch wenn meiner Ansicht nach die Runtime ins SP2 von Win XP gehört hätte)

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

Hallo S.H.-Teichhof,

auch wenn meiner Ansicht nach die Runtime ins SP2 von Win XP gehört hätte

ist sie da nicht drin? Ich kenne zumindest mehrere Leute mit XP, die .NET Runtime auf dem Rechner haben, ohne dass sie das (für sich) installiert hätten.

herbivore

Nein so viel ich weiß ist sie nicht drin aber die Leute können ja über andere Programme die sie installiert haben die Runtime bekommen haben und es nicht mitbekommen haben

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

Hallo S.H.-Teichhof,

zumindest Jim Mischel ist da zusammen mit mir anderer Meinung:

I believe they will begin upgrading this year, installing Windows 2003 on their servers and Windows XP SP2 on the desktops. Both of those operating systems include the .NET Runtime version 1.1 in the default installation.

herbivore

Die komplette Diskussion ist meines erachtens nicht gerechtfertigt.

Meiner Meinung nach ist das .NET Framework eine sehr große Erleichterung für Entwickler.

Man müsste das ganze von einem anderen Standpunkt sehen. Die Personen die gegen das .NET Framework sind, sind meistens auch gegen Microsoft usw.

Ein Framework soll einem Entwickler helfen seine Arbeit besser und schneller zu vollbringen. Man soll das Rad nicht immer neu erfinden. http://de.wikipedia.org/wiki/Framework

Das gleiche Prinzip gibt es auch unter anderen Betriebssystemen und Programmiersprachen.

Wenn jemand unter Linux eine C++ Anwendung schreibt greift dieser auch auf Ressourcen / Bibliotheken des Betriebssystems zu.

Bei jedem ausliefern der Anwendung werden die entsprechenden Libs mit Version als Vorraussetzung dargestellt.

Und hier ist die Vorraussetzung die .NET Runtime zu haben. Also verstehe ich nicht warum es immer wieder solche Diskussionen geben muss.

Wenn jemand wirklich gegen das .NET Framework ist dann soll dieser eine sich eine andere Programmiersprache aneignen.

Ganz einfach...

Oder er gibt ansonsten viel Geld aus und kauft sich von Remotesoft den Linker. Dann hat er das Problem auch los.

Also sagen wir mal so:
Wenn du das SP2 als Datei runterlädts ist das Framework nicht dabei. Wenn du es aber Windows Update runterläds wird optional angeboten. (Soweit ich weiß).

Original von burning snow
[...]

Das gleiche Prinzip gibt es auch unter anderen Betriebssystemen und Programmiersprachen.

Wenn jemand unter Linux eine C++ Anwendung schreibt greift dieser auch auf Ressourcen / Bibliotheken des Betriebssystems zu.

Bei jedem ausliefern der Anwendung werden die entsprechenden Libs mit Version als Vorraussetzung dargestellt.

Und hier ist die Vorraussetzung die .NET Runtime zu haben. Also verstehe ich nicht warum es immer wieder solche Diskussionen geben muss.

[...]

Guten Morgen,

da stimme ich burning snow vollkommen zu. Ich persönliche finde die "Idee" mit dem Framework gut.
Und bei Java ist es ja nicht anders. Selbst die Größen vom Java-SDK und -JRE ähneln der des .NET Frameworks doch stark. Also hier das gleiche "Problem".

Original von Druid
Also sagen wir mal so:
Wenn du das SP2 als Datei runterlädts ist das Framework nicht dabei. Wenn du es aber Windows Update runterläds wird optional angeboten. (Soweit ich weiß).

Ich kann nur die Version mit dem Download bestätigen. Als ich mir das SP 2 runtergeladen habe, war definitiv kein .NET Framework dabei. Ich habe auch auf der MS Seite keine Option bzw. Möglichkeit gefunden, ein SP 2 inkl. .NET Framework zu bekommen.

Ich kann mir aber gut vorstellen, dass es beim Windows Update optional angeboten wird bzw. auf einigen SP 2 CDs mit drauf ist, weil es dort ja kein Problem mit dem Speicherplatz gibt.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Das alles ist nur ein Problem für Leute, die nicht wissen, wie man einen Installer aufsetzt, der die Runtime automatisch installiert.

Für den schmalbandigen Download stellt man halt zwei Versionen zur Verfügung (mit und ohne Runtime), bzw. verweist explizit auf die Runtime-Installation. Das ist unter Java üblich und hat offensichtlich nichts am Erfolg von Java geändert. Zu behaupten, bei Java sei es wegen der "Plattformunabhängigkeit" ok, zeugt m.E. nur vom Unverständnis, was eine Plattform ist.

Wenn man bedenkt, dass Programme ohne Runtimes die benötigten Klassen statisch einlinken müssen, relativiert sich der Größennachteil der Runtime schnell wieder:

kleine bis mittlere App unter MFC oder Delphi: 500 KB-1 MB
mit .NET: 30-50 KB

Ersparnis pro App: 500-1 MB

Nach 25-50 Apps ist der Break-Even (25 MB Runtime) erreicht und man "spart".

Servus zusammen!

Das ist ja eine sehr schöne Rechnung, die Du da gemacht hast! 😉

Und prinzipiell geb ich Euch mit der Runtime ja auch Recht. Wenn ich viele Programme schreibe hab ich den Speicherbedarf irgendwann raus. Prinzipiell!!!

Aber jetzt stellt Euch mal die folgende fiktive Situation vor (fällt mir gerade mal so ein, weil sie auf mich zutrifft):

Du hast schön Dein VS.Net auf der Arbeit.

Du bist natürlich auch net der einzigste Knirps da mit nem Rechner.
Auf dem einen ist Xp, auf dem anderen 98 und auf wieder einem anderen
ist halt z.B. noch NT4 drauf.

Jetzt denkst Du dir: Hm, ich könnte meinem Kollegen mal das eine Programm schicken. Der kann das sicher gut gebrauchen.

Aber: Scheiße! Der Kunde hat ja gar keine Runtime. Also brennst Du die ganze Seuche auf eine CD. Hey net schlecht, intelligente Lösung!
Aber sobald Du bei dem Kameraden ankommst stellst Du fest, dass der gar keine
Adminrechte hat.

Nachdem Du dann die ersten Stresspickel bekommst und auf dem Weg zum
Chef zwei willkürlich ausgewählte Mitarbeiter umgeboxt hast, sagst Du:
"Chef das Programm ist totaler Mist, was hast Du Dir dabei nur gedacht???"
Aber ne, das kann man ja auch nicht bringen.

Nächste Idee: EDV! Aber von der kannst Du auch nicht verlangen, dass die auf mehreren Rechnern die Runtime installieren (kostet kaum Geld so'n Kram!!!), nur weil Du ein "kleines" Programm benötigst.

Also fährst Du frustriert nach Hause und wenn Du gefragt wirst: "Wie war denn Dein Tag?" antwortest Du mit einem nervösen Zucken im Lid, "Ach, das übliche!" und denkst voller Vorfreude an den Hirnschlag, der Dich in ein paar Jahren dank moderner Computertechnik heimsuchen wird!
...

Das kann man jetzt noch weiter treiben, aber ich glaube Ihr habt verstanden was ich damit meine. Schlecht ist es so wie es ist auf keinen Fall, aber manchmal ist es einfach nur zum ausrasten. Und was ist jetzt die Moral von der Geschichte???

Wenn *** ICH *** gleich nach Hause komme setze ich mich, in aller Ruhe, vor MEINEN PC und werde das kleine Programm für meinen Kollegen mit dem guten alten Delphi programmieren. Das hat dann halt mal 500kB anstatt ~40kB aber da scheiß ich dann auch 'drauf!!!

Amen

Ist doch toll. Niemand ist gezwungen .NET zu nutzen (zumindest noch nicht).

Ich kann auch zwischen einem Sportwagen wählen, einem Stadtwagen oder einer komfortablen Reisekutsche. Albern wird es eben nur, wenn man eine gediegene Großraumlimo mit den Aussenabmessungen eines Smart mit den Fahrleistungen eines Porsches will. Manchmal muss man sich eben entscheiden was einem wichtiger ist....

Unter Sicherheitsaspekten geht eben nichts an der Runtime-Idee vorbei. Das wird der Grund sein, warum sich diese Architektur durchsetzt (kein einziges BS am Markt hat von sich aus die nötigen Funktionen um auf Applikationsebene ausreichend granular Sicherheit zu gewährleisten). Zudem leben wir zur Zeit in einer Übergangsperiode. Aus Applikationssicht wird aus der isolierten Runtime irgendwann "DAS" Betriebssystem. Spätestens dann ist diese Diskussion obsolet.