Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
kleinster Bootstrapper der Welt (< 2kb) - installiert .net framework
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

kleinster Bootstrapper der Welt (< 2kb) - installiert .net framework

beantworten | zitieren | melden

Hallo allerseits,

wer kennt das Problem nicht, man hat ein .net Programm und will es weitergeben weiß aber nicht ob am Zielcomputer das .net Framework installiert ist.

Deshalb hab ich ein Skript geschrieben (teils Batch-Datei, teils VB-Script), welches
  1. prüft ob das .net Framework bereist installiert ist
  2. wenn nicht eine Meldung anzeigt, dass das Framework runtergeladen und installiert wird (mehrsprachig - derzeit Englisch oder Deutsch je nach der Sprache des Betriebssystems)
  3. erkennt ob das OS 32 oder 64bit ist und lädt das richtige .net Framework aus dem Internet
  4. startet die Installation
  5. (ist das Framework bereits installiert schließt sich das Script sofort wieder)

  6. Und das alles in weniger als 2 kbyte
    Also sehr gut geeignet wenn man möchte dass die Größe des Setup Paketes klein bleibt.


    Wie ist es zu benutzen?
    Es gibt 4 Dateien:
    1. downloaddotnet.vbs ... ist ein VB-Script zum downloaden einer Datei aus dem inet
    2. TestForDotNetBatch.cmd ... batch Datei. Diese muss gestartet werden, um den ganzen Prüf- und Downloadprozess zu starten.
    3. dotnet32.txt und dotnet64.txt ... Konfigurationsdateien von welcher Adresse das Framework runtergeladen werden soll. In jeder Datei steht eine Internetadresse von wo das .net Framework runtergeladen werden soll. Da ich bei Microsoft keinen dauerhaft gültigen direkten Link auf die framework-Exes finden konnte, hab ich die 64bit und 32bit Version des Frameworks runtergeladen und selbst bei mir gehostet. Die entsprechende Adresse gehört in diese Dateien.


    Wenn man z.B. ein Setupprojekt oder selbstentpackendes Archiv hat, einfach einstellen, dass die Datei TestForDotNetBatch.cmd nach der Installation gestartet werden soll.

    Ich hab das ganze auf XP und Vista getestet. Auf 2000/ME/98 funktioniert es ziemlich sicher nicht, könnte man aber evt. auch irgendwie hinkriegen.


    Welche Frameworkversion?

    Zurzeit ist das Skript für .net Framework 2.0 ausgelegt ist. Sprich, wenn Framework 2.0, 3.0 oder 3.5 installiert ist, dann passt alles. Wenn nicht, wird installiert.

    Welches Framework installiert werden soll kann man ganz einfach selbst bestimmen, da man ja in die Dateien dotnet32.txt und dotnet64.txt die Links zu den Exe-Dateien eintragen muss.

    Möchte man als Mindestvorraussetzung für sein Programm das 3.0 oder 3.5er Framework ist das kein Problem.

    Die ersten drei Zeilen der TestForDotNetBatch.cmd Datei sehen wie folgt aus:
    
    if exist "%WINDIR%\Microsoft.NET\Framework\v2.0.50727\" goto ende 
    if exist "%WINDIR%\Microsoft.NET\Framework\v3.0\" goto ende 
    if exist "%WINDIR%\Microsoft.NET\Framework\v3.5\" goto ende
    
    In Zeile 1 wird also auf Framework 2 geprüft, auf Zeile zwei auf 3 usw.
    Durch löschen der ersten Zeile wird somit nur mehr auf Version 3.0 und 3.5 geprüft, durch entfernen der ersten und zweiten Zeile nur mehr auf 3.5


    Würde mich über Rückmeldungen (sei es auch nur Bug-Report) sehr freuen

    Gruß
    Preli


    PS: bitte erzählt mir nicht dass es dafür ClickOnce gibt, das weiß ich. Was mich aber an ClickOnce stört ist, dass ohne ein ordentliches (teures) Zertifikat immer eine Warnmeldung vor der Installation kommt (sieht nicht schön aus). Außerdem ist meiner Erfahrung nach die Erkennung ob das .net Framework bereits installiert ist äußerst buggi.
Attachments
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Zitat
PS: bitte erzählt mir nicht dass es dafür ClickOnce gibt, das weiß ich. Was mich aber an ClickOnce stört ist, dass ohne ein ordentliches (teures) Zertifikat immer eine Warnmeldung vor der Installation kommt (sieht nicht schön aus). Außerdem ist meiner Erfahrung nach die Erkennung ob das .net Framework bereits installiert ist äußerst buggi.
Besonders im Bereich eigener Setup-Pakete gibt es bereits einen guten brauchbaren Bootstrapper (zudem auch noch kostenlos!) und nennt sich dotnetinstaller. Dieses ist auch für die Verteilung des .NET Frameworks entwickelt worden und voll konfigurierfähig sowie auch mehrsprachig.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
private Nachricht | Beiträge des Benutzers
Björn
myCSharp.de - Member



Dabei seit:
Beiträge: 142
Herkunft: Rhode

beantworten | zitieren | melden

Zitat
dotnet32.txt und dotnet64.txt ... Konfigurationsdateien von welcher Adresse das Framework runtergeladen werden soll. In jeder Datei steht eine Internetadresse von wo das .net Framework runtergeladen werden soll. Da ich bei Microsoft keinen dauerhaft gültigen direkten Link auf die framework-Exes finden konnte, hab ich die 64bit und 32bit Version des Frameworks runtergeladen und selbst bei mir gehostet. Die entsprechende Adresse gehört in diese Dateien.

Find ich nicht schön! Woher weiß ich oder der Benutzer später, wie vertrauenswürdig du bist? Wie lange sind die Daten dort aktuell? Wer sagt mir, dass du die nicht nach 2 Monaten aus Platzproblemen oder weil du deinen Server nicht mehr brauchst, löschst?

Leider ein Punkt, der mich absolut abhalten würde, dieses Projekt zu nutzen!
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

@Björn: hast du eigentlich in die Dateien reingeschaut?
Für denn Fall das du nicht weißt was drinn steht:
http://www.adresse-zum-framework-eingeben.com/framework.exe
Wie man unschwer erkennen kann keine richtige Adresse zu irgendeinem Framework. Wenn jemand den Bootstrapper benutzen möchte muss er selbst das Framework hosten (oder irgendwo anders einen Link herbekommen).
Ich muss sagen ich finde diese Lösung derzeit auch nicht optimal, aber ich bin offen für Vorschläge, bis jetzt ist es der beste Weg den ich gefunden hab.

@kleines_eichhoernchen: danke für den Link. Aber den dotnetinstaller kenn ich auch bereits. Finde ihn auch recht gut, allerdings wenn ich mich nicht irre ist dieser Bootstrapper recht groß. 408 KB nur um auf das .net Framework zu prüfen find ich recht viel.

Gruß
Preli
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Der dotNetInstaller ist ein (frei) konfigurierbarer Bootstrapper - entwickelt für die Bereitstellung des .NET Frameworks - ist aber viel mehr als das. Du kannst den Bootstrapper auch für sehr viele andere Komponenten benutzen.

Und wo ist das Problem bei 408 KB? Das .NET Framework 3.5 mit allen derzeit erschienen Service Packs ist über 100 MB groß (Architekturneutral), da kommt es nicht wirklich auf wenige KBytes an

Ich als Entwickler und als potenzieller Endkunde finde eine Setup.exe seriöser als eine oder mehrere Script-Dateien.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Zitat von kleines_eichhoernchen
Und wo ist das Problem bei 408 KB?
Manchmal möchte man eine kleine Dateigröße für sein setup. Heutzutage kommt es zwar auf die paar kb wirklich nicht an, aber ab und zu kann es trotzdem erforderlich sein. (wie für eines meiner derzeitigen Projekte)
Zitat von kleines_eichhoernchen
Das .NET Framework 3.5 mit allen derzeit erschienen Service Packs ist über 100 MB groß (Architekturneutral), da kommt es nicht wirklich auf wenige KBytes an
Die paar Kbytes müssen aber immer runtergeladen werden, das .net Framework nur wenn es nicht schon installiert ist (was es in Zukunft wohl immer seltener geben wird)
Zitat von kleines_eichhoernchen
Ich als Entwickler und als potenzieller Endkunde finde eine Setup.exe seriöser als eine oder mehrere Script-Dateien.
Diese Scripts sollten ja auch in eine Setup.exe verpackt werden (wie in meinem ersten Post nachzulesen ist). Dann wird der potenzielle Endkunde meist gar nicht bemerken, dass solche Dateien existieren.

Gruß
Preli
private Nachricht | Beiträge des Benutzers