Laden...

Wie mit app.config bei einem Software-Update umgehen?

Erstellt von GambaJo vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.461 Views
GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 8 Jahren
Wie mit app.config bei einem Software-Update umgehen?

Ich habe hier einige Produkte, für die wir nach und nach WiX-Setups erstellen.
Jetzt ist die Frage aufgetaucht, wie man bei einem Update oder Upgrade der Software per Setup mit der vorleigenden app.config umgehen soll.

Situation:
Bei vielen unserer Produkte wurde eine app.config erstellt, in der z.B. ConnectionStrings, Endpoint-Adressen usw. abgelegt werden. Installiert der Kunde eines dieser Produkte, werden vom Installer Dialoge angezeigt, auf denen der Benutzer die notwendigen Daten eingeben kann. Der Installer schreibt diese dann in die Config.

Problem:
Diese Configs werden manchmal für weitere Versionen des Produkts erweitert. Diese Erweiterung soll bei den Kunden natürlich auch ankommen. Gleichzeitig sollen die bereits bestehenden Informationen in der Config des Kunden erhalten bleiben. Ein einfaches Sichern und Zurückspielen der Config reicht also nicht aus, da sonst die neuen Elemente nicht enthalten wären. Ein einfaches Ersetzen der Config würde die bisher vom Kunden erfassten Daten verwerfen.

Frage:
Gibt es da ein dafür schon irgendeine allgemeine Lösung, irgendeine Standard-Funktion, die genau für dieses Problem gedacht ist?
Oder muss ich das relativ aufwändig manuell in jedem Setup einzeln und quasi manuell behandeln?

16.830 Beiträge seit 2008
vor 8 Jahren

Bei dem Vorgehen seh ich gar keine andere Möglichkeit als es manuell zu machen.
Ich hätte verschiedene Config für Auslieferungszustand und CustomConfiguration angelegt - dann gäbe es diese Situation nun nicht 😃

GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 8 Jahren

Bei dem Vorgehen seh ich gar keine andere Möglichkeit als es manuell zu machen.

Schade. Meine Hoffnung war, dass das ein weit verbreitetes Problem ist und es daher eine einfache und allgemeine Lösung gibt. Es ist ja eher unrealtisisch, dass eine Config sich über zig Versionen einer Software nicht verändert/erweitert.

Ich hätte verschiedene Config für Auslieferungszustand und CustomConfiguration angelegt - dann gäbe es diese Situation nun nicht 😃

Wie das halt so ist, habe ich/wir das so "geerbt". Wobei ich nicht glaube, dass das Problem so lösbar wäre. Aber vielleicht verstehe ich dich auch nur falsch.

Beispiel:

Ich liefere MyProgram in der Version 1.0.0.0 aus. Dieses Programm benötigt den Zugriff auf eine Datenbank. Dafür werden bei der Installation der Software die Zugangsdaten zum Datenbankserver abgefragt und in der Config abgelegt.

Für die Version 2.0.0.0 von MyProgram benötigt das Programm nun zusätzlich die Kommunikation mit einem Web-Service. Um diesen Web-Service ansprechen zu können, benötigt MyProgram die Endpunkt-Adresse des Web-Services. Diese würde man bei der Installation der Version 2.0.0.0 von MyProgram eingeben, und die werden dann auch in der Config gespeichert.
Dafür muss man halt irgendwie die beim Kunden vorliegende Config aus der Version 1.0.0.0 so erweitern, dass die Daten aus 1.0.0.0 erhalten bleiben, und gleichzeitig die nötigen Elemente zum Speichern des Endpunkts eingefügt werden.

3.511 Beiträge seit 2005
vor 8 Jahren

Hallo,

das kann man mit WiX machen. Nennt sich "Remember Property Pattern". Kurz gesagt, der Installer ließt vor dem Update die Werte alle ein um dann die neue Config abzulegen und die gemerkten Werte alle wieder einzutragen. So machen wir hier das auch. Da mir das im Xml allerdings zu "doof" war, habe ich eine Custom Action dafür geschrieben.

Gruß
Khalid

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

P
40 Beiträge seit 2011
vor 8 Jahren
GambaJo Themenstarter:in
105 Beiträge seit 2006
vor 8 Jahren

das kann man mit WiX machen. Nennt sich "Remember Property Pattern".

So, wie ich das verstanden habe, werden diese Werte in der Registry abgelegt, oder?
Funktioniert das auch, wenn man zwischen erster Installation und dem Upgrade die Werte per Texteditor in der Config ändert?

Suchst du vielleicht sowas?

>

Ja, ich denke aber, dass das die Lösung wird, wenn nichts anderes geht, weil das ja bedeutet, man muss alles "zu Fuß" machen.

3.511 Beiträge seit 2005
vor 8 Jahren

So, wie ich das verstanden habe, werden diese Werte in der Registry abgelegt, oder?
Funktioniert das auch, wenn man zwischen erster Installation und dem Upgrade die Werte per Texteditor in der Config ändert?

Ja, wenn man es wie beschrieben macht, landen alle Werte zwischenzeitlich in der Registry. Aus dem Grund habe ich es als Custom Action umgesetzt. Die Werte werden alle als Property zur Laufzeit zwischengespeichert und anschließend wieder eingesetzt.

Da die Werte erst gelesen werden wenn das Setup ausgeführt wird, funktioniert dies entsprechend auch bei manueller Änderung.

Gruß
Khalid

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)