| 

.NET C# Java Javascript Exception

5
Ich überlege mir grad ein Szenario für ein Deployment einer WPF/WCF Anwendung.

In der Vergangenheit haben ich ein MSI gebaut und darin waren immer alle DLLs und EXE-Dateien hinterlegt. Gab manchmal einige Unstimmigkeiten darüber - aber das ist ein anderes Thema.

Nun will ich gern was neues probieren. Frage daher: Geht das und gibt´s das vielleicht schon wo

Szenario: Ich erstelle wieder ein MSI - aber darin ist nur ein "bootstrapper" drin. Der hat den WCF-Server als Pfad drin. Es wird ein "Icon" installiert, auf das der Benutzer drücken kann.

Nun startet der Benutzer mit dem Doppelklick. Es kommt ein einfacher Dialog (Benutzername/Kennwort)und der BT verbindet sich mit dem WCF-Server. Der hält die benötigten Client-DLLs in einer Form vor, die er dann vom Server zum Client überträgt - in das Anwendungsverzeichnis. Wurde alles übertragen, dann startet die eigentliche Anwendung.

Damit wäre auch das Update-Problem gelöst: Immer beim Start werden zuerst die neuesten Dateien übertragen

Macht sowas Sinn? Besonders in Anbetracht der Tatsache, das evtl. auch mal über VPN gestartet wird?
08.01.2013
MyKey0815 1,6k 2 9
3 Antworten
4
Wir haben das so gelöst:

Über ein Windows Forms Programm (Client) pflegen wir Anwendungen. Es wird eine Anwendung angelegt, die bekommt eine eindeutige Guid. Die Anlage und Verwaltung der Anwendung geschieht über einen erstellten Webservice. Dieser wiederum speichert die Daten in einer Oracledatenbank.

Jede Anwendung wird zunächst ganz normal komplett per MSI Setup verteilt. Der Trick besteht aber nun darin, dass die Anwendung, nachdem diese beim Kunden installiert wurde, nie direkt gestartet wird. Wir liefern zusätzlich eine Start.exe und eine update.xml aus. In der XML Datei stehen Informationen zu dieser Anwendung, die eindeutige GUID und die Version.

Startet der Anwender nun die Anwendung wird die Start.exe ausgeführt. Diese befragt den Webservice ob Updates vorliegen. Wenn ja, werden die vorliegenden Dateien heruntergeladen und installiert. Anschließend startet die eigentliche Anwendung, deren Namen ebenfalls in der update.xml vermerkt ist. In der update.xml wird die neue Version eingetragen und der Prozess beginnt beim nächsten Start erneut.

Es ist natürlich auch möglich, die MSI ganz klein zu halten, also nur start.exe und update.xml auszuliefern und beim ersten Start wird dann die ganze Anwendung geladen.

Ich kann für eine Anwendung beim Kunden als jederzeit eine, oder mehrere Dateien austauschen oder hinzufügen, oder komplett installieren. Selbst ein notwendiger Austausch der Start.exe funktioniert, da diese ein Selfupdate integriert hat.

Das war jetzt nur eine grobe Beschreibung des Vorganges. Dass die Dateien im Verwaltungsprogramm beim hochladen gepackt werden, beim Download durch die Start.exe entpackt werden, eine Updatehistorie vom Webservice geführt wird, dass zusätzliche Mechanismen zur Ausführung von speziellen Vorgängen hinterlegt werden können (Update Datenbank z.B) möchte ich jetzt nicht näher ausführen.

Aber das ganze funktioniert super und unsere Updateprozesse sind zeitnah, automatisiert und bisher ohne Probleme.
05.04.2013
JEwen 2,7k 5
2
Was passiert wenn der Benutzer die Anwendung direkt startet und die Start.exe umgeht?
Andreas59 09.04.2013
1
Das kommt sehr selten vor, da die Anwendungen fast alle in einer virtuellen Umgebung laufen, der (normale) Benutzer gar nicht die Möglichkeit hat, die Anwendung direkt aufzurufen. Für andere Anwendungen, die außerhalb der viertuellen Umgebung laufen und tatsächlich selbst aufgerufen werden könnten, können wir festlegen ob eine ältere Anwendung ohne Update weiterbetrieben werden kann/darf. Diese Anwendungen können dies beim WCF Service selber abfragen und den Start dann verweigern.
JEwen 09.04.2013
4
Das Szenario gibt es öfters und passend dazu gibt es auch eine Lösung von Microsoft. Nennt sich ClickOnce.

Leider habe ich das selber noch nicht eingesetzt und kann dir somit keinen Erfahrungsbericht geben. Das System soll aber ziemlich smooth funktionieren.
08.01.2013
Andreas Richter 1,7k 1 2 8
+1 Da hab ich beim Lesen der Frage auch sofort dran gedacht. Aber ich habe leider auch noch keine Erfahrungen damit.
Matthias Hlawatsch 09.01.2013
3
Hallo, das mit ClickOnce hört sich anfänglich gut an, aber sobald du ein Config-File dabei hast, musst du dieses bei jedem Deployment an das Zielsystem anpassen, da hierüber eine Prüfsumme gebildet wird, und das auszuliefernde Packet somit nicht mehr geändert werden kann.
Ich habs nach langer Zeit wieder verworfen, geblieben ist aber das Problem eines vernünftigen Updatemechanismus.
21.01.2013
MStrasser 342 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH