2009-06-17 9 views
6

This question beschreibt mein Problem genau, außer ich eine benutzerdefinierte Konfiguration Abschnitt in app.config mit ConfigurationManager verwenden, so dass die Lösung dort präsentiert gilt nicht ...Wie behalte ich app.config über ClickOnce-Updates mit ConfigurationManager?

Grundsätzlich mein Problem ist, dass, wenn die Clickonce-Anwendung aktualisiert, Es wird mit der neuen app.config in ein anderes Verzeichnis installiert, wodurch alle vorgenommenen Änderungen gelöscht werden. Meine Anwendung verwendet app.config, um Anwendungseinstellungen persistent zu machen, also ist das sehr schlecht ... ein fusioniertes Update wäre ausgezeichnet (ähnlich dem, was in der anderen Frage erreicht wird), aber fast alles Automatisierte wäre zu diesem Zeitpunkt gut.

Oder sollte ich nur einen festgelegten Speicherort für meine app.config-Datei verwenden, anstatt zu versuchen, den Standardspeicherort zu verwenden?

Antwort

2

ClickOnce sollte Benutzereinstellungen zwischen Updates beibehalten, aber ich habe dies aus unbekannten Gründen einmal oder zweimal fehlgeschlagen (und mit schlechten Ergebnissen). Ich habe keine benutzerdefinierte Konfigurationseinstellung ausprobiert, aber ich habe das Vertrauen verloren, dass ClickOnce die Einstellungen nicht überschreiben kann.

Der Ansatz, den ich verwenden möchte, besteht darin, ClickOnce-Updates manuell zu verarbeiten, anstatt die App zuzulassen. um nach Updates zu suchen und den Benutzer zur Installation aufzufordern. Ich hatte auch ein paar Benutzer, die das Update nicht akzeptiert haben und es ist ein Schmerz, von dem man sich erholen kann. Ich hoffe, dass ich die Einstellungen manuell in den Speicher einlesen kann, bevor ich das Update manuell bearbeite, und sie dann nach dem Update wieder zurückschreibe. Es gibt ein ApplicationUpdated-Ereignis, das diesen Zweck erfüllen sollte.

Vielleicht könnte dieser Ansatz auch für Sie arbeiten.

Edited Referenzen hinzuzufügen:

Googeln für ApplicationDeployment sollte auch helfen.

+0

Verbleibende ist dieses ApplicationUpdated Ereignis? Ich kann es nicht im Objektbrowser finden ... Auch das hat dem Problem nicht geholfen (obwohl es ein nettes Feature ist, habe ich die ClickOnce-Dialoge nie gemocht), die Updates werden immer noch in einem neuen Verzeichnis installiert, also das alte app.config ist verloren –

+0

re: Ihr zweiter Link über ApplicationSettingsBase, erbte ich von ConfigurationSection, so ist dies keine Option für mich ist es? –

+0

Sehen Sie sich die Deployment.Application.ApplicationDeployment-Klasse an. Ich denke, ich habe Beispielcode angeschaut, als ich das ApplicationUpdated-Ereignis erwähnte. Ich merke, dass die alte app.config verloren ist, meine Idee ist, die Benutzereinstellungen von der aktuellen Konfiguration einzulesen, zu aktualisieren, und dann die Benutzereinstellungen auf die neue Konfiguration zu schreiben. –

1

Wenn Sie können, verwenden Sie Settings.settings (unter Eigenschaften in Ihrem Projekt), um Ihre Kundenkonfiguration zu speichern.

ClickOnce wird automatisch Ihre Benutzereinstellungen zusammenführen und Sie müssen sich um nichts kümmern. Überprüfen Sie etwas wie das für weitere Anweisungen: http://www.dotnetperls.com/settings-visual-studio