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
AppDater (ehemals K_Updater)
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

AppDater (ehemals K_Updater)

beantworten | zitieren | melden

[B][U]Allgemeine Informationen:[/U][/B]

Aktuelle Version: 1.0.0 Beta1 Build 9091 (15.09.2009)

[URL]Projekthomepage[/URL]
[URL]Wiki[/URL]
[URL]Changelog[/URL]

Schönen Abend an alle.
Bis mein USBSynC fertig ist und das wird ja noch etwas dauern, möchte ich mein paralleles Projekt vorstellen.

Es ist eine Update-Komponente.

Geboren wurde die Idee deswegen: Ich habe mehrere Projekte die alle Selbst-Updatefähig sein sollen. Für jedes Programm musste ich dann die Updateroutine neu schreiben. Das war mir zu umständlich und ich habe es immer mehr modularisiert. Letztlich soweit, dass nur noch eine DLL in ein Projekt einzubinden ist, ein Objekt zu erzeugen und schon kann man mit zwei Zeilen den Updatevorgang starten.

Was sonst noch benötigt ist: ein Server, der die aktuellen Dateien hält und ein kleines PHP-Skript. Alles natürlich im K_Updater mitgeliefert.

Der Programmierer kann somit auf einfache Art und Weise sein eigenes Programm Selbst-Update-Fähig machen.

Weitere Funktionen:
- Backup der Dateien vor jedem Updatevorgang, so dass im Fehlerfall der Urzustand wiederhergestellt werden kann.
- Statistiken: Auf Wunsch können Statistiken mitgeloggt werden: wie oft wurde eine Updateanfrage gestellt, wie oft wurde ein Update durchgeführt.
- Lokalisierung (derzeit Deutsch/Englisch)

Ein kleines Video dazu habe ich hier gemacht: K_Updater Video

Das Fenster während dem Updatevorgang ist schon Bestandteil des K_Updaters.
Es sind im besten Falle nur etwa folgende Zeilen nötig:

Zunächst werden die Einstellungen festgelegt und ein Updater-Objekt erzeugt:


// Erzeuge K_Update-Objekt
String[ ] k_Settings = new String[ 4 ];
k_Settings[ 0 ] = "http://www.klausmoster.de/Downloads/Software/clickfinderupdate/update.xml";
k_Settings[ 1 ] = Application.StartupPath;
k_Settings[ 2 ] = "ClickFinder-OTR-Plugin Update";
k_Settings[ 3 ] = "de";

UCheck = new UpdaterCheck.UpdaterCheck( k_Settings );

Nun werden die Prozesse hinzugefügt, die vor dem Updatevorgang beendet werden und nach dem Updatevorgang gestartet werden sollen:


// Füge Abzuschießende Programme hinzu
String addProgramm = "ClickFinder-OTR-PlugIn";
UCheck.addProgramToKill( addProgramm );

//Füge zu startende Programme hinzu
UCheck.addProgramToRun( Application.StartupPath + "\\ClickFinder-OTR-PlugIn.exe");

Das wars schon.
Anschließend kann man mit


// Suche nach Updates
int intFilesToUpdate = UCheck.Check( );
nach Updates suchen. Zurückgegeben wird die Anzahl der zu aktualisierenden und neuen Dateien.

Mit


// Starte Update
UCheck.DoUpdate( );
startet man den Updatevorgang dann letztlich.

Derzeit bastel ich gerade eine Projekthomepage dazu. Vllt kann sowas der ein oder andere von euch ja gebrauchen.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von EvilMM am .
private Nachricht | Beiträge des Benutzers
AlphaWolf
myCSharp.de - Member



Dabei seit:
Beiträge: 10

beantworten | zitieren | melden

Sehr geil. Wird der Updater als eigener Prozess gestartet oder wie soll ich mir das Vorstellen, dass das main excutable überschrieben werden kann?

Werde ich auf jeden Fall gebrauchen können.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Also das läuft so:

immer wenn man das Update anstößt wird nach einer neuen Version der updater.exe auf dem Server geschaut. Ist eine neuere vorhanden, wird diese dann runtergeladen.

nach doUpdate() wird dieser Prozess update.exe gestartet und diese erledigt den Rest. Somit ist auch sichergestellt, dass bei jedem Updatevorgang die aktuellste Updateanwendung beim Benutzer ist.
private Nachricht | Beiträge des Benutzers
AlphaWolf
myCSharp.de - Member



Dabei seit:
Beiträge: 10

beantworten | zitieren | melden

Und diese update.exe checkt lädt dann eventuell neue Dateien vom Server herunter?
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Genau, die Dateien werden vorher auf dem Server gehasht und dann lokal und dann verglichen.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ich habe es geschafft meine erste Version (0.3.0) zu veröffentlichen. Eine ca. 10 Seiten lange Anleitung liegt dem Paket bei.

Herunterladen könnt ihr es auf meiner Homepage:

K_Updater

Derzeit funktioniert folgendes:
- Das Update wird durchgeführt
- Vor dem Update werden alle Dateien gesichert
- Im Fehlerfall oder bei Abbruch wird der Urzustand wiederhergestellt
- Im Ordner log werden einfache Logdateien angelegt mit den Zeiten, zu denen eine Updateanfrage oder ein Update durchgeführt wurde
- Englisch / Deutsch
- Anwendungen werden vorher geschlossen, anschließend gestartet

Ich hoffe ich habe die Anleitung verständlich geschrieben.
Testet es mal wenn ihr wollt und gebt mir Feedback hier im Forum oder direkt per Mail (Adresse steht in der Anleitung).
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Und direkt Version 0.3.1 oben, da gabs noch ein Problem mit der Statistikfunktion. Sollte jetzt gehen.
private Nachricht | Beiträge des Benutzers
Christi4n
myCSharp.de - Member



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

beantworten | zitieren | melden

Hallo!

hab es gerade ausprobiert und ich muss sagen es gefällt mir äuerst gut. Eine wichtige Frage, inwieweit darf ich die Bibliothek von dir verwenden? Also wie sieht es mit lizenzen und so aus? Bin nämlich selbst grad am entwickeln eines solchen tools und da könnte ich mir theoretisch viel zeit ersparen..
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Hallo,
den Updater kannst du frei in deinen Projekten verwenden. Abändern und dergleichen allerdings nicht - so wie er ist muss er bleiben :-)
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Version 0.4.0

beantworten | zitieren | melden

Nun hab ich Version 0.4.0 fertiggestellt.

Änderungen:
- Tasks können mit Parametern gestartet werden
- Abbruch wenn lokale Datei in Gebrauch
- [FIX] Fehler bei Restzeitanzeige korrigiert

Für den Aufruf gibt es Änderungen bei der Funktion addProgramToRun. Diese Methode hat nun einen zweiten Parameter für die Parameterübergabe.

Beispiel: addProgramToRun( "notepad.exe", "c:\text.txt );

Möchte man keine Parameter, einfach leer lassen:

addProgramToRun( "notepad.exe", "" );

Download: hier

Planung für Version 0.5.0:
- Selbstupdate von K_Updater. Wenn immer ein Update durchgeführt wird kann der K_Updater selbst nach einem Update schauen.
- Updateübersicht anzeigen
- Nach x Versuchen den Updater zu aktualisieren, den Versuch einfach aufgeben. Kann in einer Endlosschleife enden, wenn updater.exe aktualsiert wurde, aber danach nicht createUpdate.php aufgerufen wurde
- Auf Wunsch bestimmte Registryeinträge aktualisieren
- Wahl ob Tasks gestartet werden sollen wenn ein Fehler vorlag
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von EvilMM am .
private Nachricht | Beiträge des Benutzers
Jabi
myCSharp.de - Member



Dabei seit:
Beiträge: 223

beantworten | zitieren | melden

hallo

konnte es aus zeitmangel leider nicht testen ...
eine frage ist es möglich hier auch mit credentials zu arbeiten ?
denn wenn ich eine exe datei auf dem server liegen habe würde ich die auch gerne mit einer ht.access schützen ???
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Sehr guter Hinweis. Im Moment liegen die Dateien ja einfach nur auf dem Server und theoretisch kann ohne Probleme auf diese zugegriffen werden. Wäre natürlich bei kommerziellen Projekten ein Kardinalfehler.

Werde dem auf jeden Fall nachgehen und versuchen eine Authentifizierung einzubauen.

Nachtrag:
Scheint nicht schwer in der Umsetzung zu sein. Werde ich in die nächste Version 0.5.0 mit aufnehmen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von EvilMM am .
private Nachricht | Beiträge des Benutzers
Jabi
myCSharp.de - Member



Dabei seit:
Beiträge: 223

beantworten | zitieren | melden

vielleicht noch die credentials verschlüsselt speichern um nicht jedes mal bei einer passwort abfrage alles wieder einzugeben

wenn du dich per mail bei mir meldest kannst ne sehr gute verschlüsselungsmethode haben
private Nachricht | Beiträge des Benutzers
Jabi
myCSharp.de - Member



Dabei seit:
Beiträge: 223

beantworten | zitieren | melden

hallo bekommst die 2 methoden am abend zugesandt hab sie leider nicht auf dem rechner hier

grundprinzip läuft so

1 methode verschlüsselt einen string und speichert ihn in einer textdatei am rechner

2methode brauchst du nur noch den filepfadangeben und die 2 key's
und du bekommst den entschlüsselten string zurück
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Vielen Dank, dann schau ich mir das mal an.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Nächste Version

beantworten | zitieren | melden

Die Entwicklung geht voran. Noch ein paar kleine Fehler ausbügeln, eine Verschlüsselung rein und die nächste Version wäre soweit fertig.

In der nächsten Version werden unter anderem Fehler abgefangen und angezeigt, zum Beispiel:



oder:



Desweiteren funktioniert das mit den Credentials schon soweit. Wenn man einen Ordner per .htaccess und AuthType = Basic schützt, so kann dies im Updater entsprechend eingestellt werden, so dass der Download dennoch geht.

Lediglich die Möglichkeit um das verwendete Passwort auch anständig zu verschlüsseln fehlt noch.

AuthType = Digest kann ich vermutlich erstmal vernachlässigen. Die Authentifizierung per x509-Zertifikat möchte ich dann in der nächsten Version erst einbauen.

P.S.: Falls jemand Lust hat den Update in mehrere Sprachen zu übersetzen (Deutsch/Englisch mache ich), so möge er sich bitte per PN oder Mail melden. Die entsprechende XML-Datei beinhaltet nicht viele Wörter.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von EvilMM am .
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Version 0.5.0

beantworten | zitieren | melden

Habe eben die neue Version 0.5.0 veröffentlicht.

Änderungen:
- Nach 3 vergeblichen Versuchen die updater.exe zu aktualisieren aufgeben
- Fehler während des Downloads werden ausgegeben
- Basic-Authentifizierung wird unterstützt
- Registryeinträge können angelegt werden
- [FIX] Fehler bei addProgrammToKill und addProgrammToRun behoben,
wenn mehr als ein Programm hinzugefügt wurde.

Wichtigste Änderungen:
- Es kann nun eine Basic-Authentifizierung mit der htaccess verwendet werden. Das Passwort wird dazu im Klartext in den Quellcode geschrieben. Das ist zugegeben bestimmt noch nicht die beste Lösung, aber ich bin da immernoch auf der Suche wie ich das am Besten löse.
- Es können nach dem Update Registrykeys verändert werden. Derzeit String, ExtendedString und DWord. Dazu müssen vorher Variablen in der settings.php angelegt werden. Mehr Informationen gibt es in der Anleitung im ZIP-Paket.

Download wie immer hier.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Ausblick Version 0.6.0

beantworten | zitieren | melden

Für die nächste Version baue ich gerade eine Obefläche um die Statistiken auszuwerten.
Es ist ja bestimmt nicht uninteressant, wieviele Leute eine Updateanfrage starten oder tatsächlich ein Update durchführen.

So sieht das derzeit aus:


-> aufs Bild klicken um die große Ansicht zu sehen.
private Nachricht | Beiträge des Benutzers
Lion1984
myCSharp.de - Member



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

beantworten | zitieren | melden

Hallo,

nun bin auch ich endlich über dein tolles Projekt gestolpert.. jedoch hätte ich eine Frage, wobei diese even., schon beantwortet wurde und ich sie einfach nicht gefunden habe

Was passiert mit neuen Dateien ?
Als Beispiel man nehme eine Plugin fähige Anwendung. das Basis Programm wird ausgeliefert und nach gewisser Zeit wird ein Plugin auf den Webspace gelegt (*.dll), welches für weiteren betrieb wichtig ist.
Was passiert dann? wird diese Datei mitkopiert bzw erstellt oder wie wird dieses gehandhabt?

Das selbe gilt dnan natürlich auch für neue Ordner oder ähnliches.

lg lion
lg Lion
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Hallo,
wenn du neue Dateien zu deinem Projekt hinzufügst, dann wird diese automatisch ins Autoupdate mit einbezogen. Also wenn du createUpdate.php aufrufst, dann werden alle Dateien im Ordner files beim Update berücksichtigt.

Somit wird diese neue DLL in deinem Falle mit auf den PC kopiert.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Kleines Update

beantworten | zitieren | melden

So könnte eine Endversion aussehen:



Auswertungsfunktionen wie:
- wie oft wurde welche Version geupdated
und zahlreiche weitere sind natürlich denkbar und sollen nach und nach umgesetzt werden.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Ausblick auf 0.6.0

beantworten | zitieren | melden

Die Entwicklung ist derzeit wieder voll in Gange.
Für die nächste Version soll funktioniere:
- Dienste korrekt beenden wenn diese aktualisiert werden müssen
- Proxyunterstützung

Außerdem arbeite ich gerade an einem Installer.
Schaut euch mal das Video hier an: Video

Sinn ist: eine einfache Installation und Einrichtung auf dem Server ohne selbst per FTP-Programm Hand anlegen zu müssen.

Auch später für das aktualisieren der Dateien möchte ich einen Assistenten erzeugen.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Hab wieder ein bissl Zeit investiert und arbeite gerade an einer kompletten Administration.

Ziel soll es sein: Durch eine Admin-Oberfläche die Updates für alle Projekte verwalten. Die Obefläche richtet den Server ein und von ihr aus kann man dann auch die Updates erzeugen. Es wird auch möglich sein parallel mehrere Updates anzubieten.

So könnten dann mehrere Updatepakete erzeugt werden die nur für bestimmte Ausgangsversionen bestimmt sind.





private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Wieder ein paar Updates.

Administration ermöglicht jetzt schon das Erzeugen von neuen Updatepaketen. Die Einrichtung des FTP-Server erfolgt auch ganz ohne eigenes zutun.

Desweiteren arbeite ich gerade daran, dass die Update-Oberfläche anpassbar wird.
Aber ich lasse wieder ein paar Bilder sprechen:











private Nachricht | Beiträge des Benutzers
boonkerz
myCSharp.de - Member



Dabei seit:
Beiträge: 122

beantworten | zitieren | melden

Hallo,

Funktioniert das auch über Proxys?

Weil ich habe hier nur socks und http
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Jupp,
also der Updatevorgang selbst funktioniert jetzt schon über Proxy, die Administrationsoberfläche noch nicht - kommt aber.
private Nachricht | Beiträge des Benutzers
Counterfeit
myCSharp.de - Member



Dabei seit:
Beiträge: 118
Herkunft: Kassel

beantworten | zitieren | melden

Hi EvilMM,
ich muss sagen ich beobachte dein Projekt schon etwas länger und muss sagen, sieht echt verdammt gut aus. Ich werd für mein aktuelles Projekt noch meinen eigenen Updater nutzen aber sobald eine stabile Version deines Updaters rauskommt, werde ich es sofort integrieren :-)
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Hi,
das freut mich sehr. Ich schätze eine stabile Version kann ich in den nächsten zwei Wochen liefern.

Werde die weiteren Fortschritte hier aber noch weiterhin posten.
private Nachricht | Beiträge des Benutzers
LastGentleman
myCSharp.de - Member

Avatar #avatar-1696.jpg


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

beantworten | zitieren | melden

Hallo ich hab zwar meinen eigenen Updater geschrieben, aber mir gefällt deiner sehr gut.
Großel Lob auch von mir, evt. verwende ich ihn für meine eigenen Projekte.

Liebe Grüße
LastGentleman
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
private Nachricht | Beiträge des Benutzers
Scotty
myCSharp.de - Member



Dabei seit:
Beiträge: 24
Herkunft: Neuruppin

beantworten | zitieren | melden

Ich finde deine Umsetzung auch sehr interessant, beschäftige mich selber ja auch mit so einem Projekt. Vor allem muss ich die Umsetzung deines ACPs loben, hast du gut hin bekommen, ich traue mich da noch nichts zu veröffentlichen .
Scotty's .NET Projekte: StarTrek Infos X10, e-hahn Updater 3.10, Easy Desktop Note 1.10
private Nachricht | Beiträge des Benutzers