2010-09-23 5 views
8

Ich verwende .NET user settings Funktion und ich stehe vor einem Problem.Wie Benutzereinstellungen bei Deinstallation beibehalten werden

Wenn die Anwendung deinstalliert und anschließend wieder installiert wird, gehen die Benutzereinstellungen verloren.

Ich verstehe, es ist von Entwurf, und ich möchte in der Lage sein, dem Benutzer im Installer die Wahl zu geben.

Könnten Sie mir bitte ein paar Hinweise auf Artikel oder Dokumentation geben, die mir helfen?

Vielen Dank

Antwort

15

.NET-Benutzereinstellungen werden bei der Deinstallation nicht entfernt. Tatsächlich sind die Einstellungen aller früheren Versionen der Software in Local Settings Verzeichnis gespeichert.

Wenn die neue Version installiert ist, wird eine neue Version der Einstellungen erstellt und die Standardeinstellungen werden verwendet.

Um sicherzustellen, dass Ihre Anwendung neue Einstellungen mit der vorherigen Konfiguration zusammenführt, müssen Sie die Methode Settings.Default.Upgrade() aufrufen.

Die Lösung besteht also darin, die Einstellungen bei der Deinstallation manuell zu entfernen, wenn sie nicht beibehalten werden sollen. Da das, was ich brauchte vorherige Einstellungen wurde die Erhaltung, alles, was ich jetzt tue, ist eine neue Einstellung zu schaffen genannt UpgradeRequired mit true den Standardwert hat, dann diesen Code Start bei Anwendung hinzufügen:

if (Properties.Settings.Default.UpdateRequired) 
{ 
    Properties.Settings.Default.Upgrade(); 
    Properties.Settings.Default.UpdateRequired = false; 
} 
1

Sie möglicherweise die Einstellungen schreiben könnten Sie in der Registrierung speichern Sie wollen oder sie als XML-Datei an einem Speicherort schreiben, die von der Deinstallation nicht beeinträchtigt werden.

+0

Könnten Sie mich zu Artikel verweisen erklären, wie man Erstellen Sie einen benutzerdefinierten Persistenzanbieter für sie? –

+0

Ich habe nichts bookmarken, aber eine schnelle Google-Suche ergab diese http://www.java2s.com/Code/CSharp/Windows/Savevaluetoregistery.htm – Chuck

+1

Warum wurde das ohne eine Erklärung downvoted? –

0

Wenn Sie weiterhin Benutzereinstellungen verwenden möchten, würde ich vorschlagen, eine benutzerdefinierte Installer-Klasse zu schreiben und die Methode onUninstalling zu implementieren, um find the file zu gehen und sie an einen anderen Ort zu kopieren, der der onInstall-Methode Ihres benutzerdefinierten Installationsprogramms bekannt ist. Damit das nächste Mal das Installationsprogramm ausgeführt wird, könnte es die Datei finden.

+1

Warum wurde dies ohne Erklärung abgelehnt? –

0

Ich glaube nicht, dass Sie nach einer Deinstallation tatsächlich Daten auf dem Benutzercomputer beibehalten möchten. Dateien herum zu lassen ist eine üble Übung, ein großes No-No. Sie sollten eine Funktion in der Anwendung selbst verfügbar machen, um diese Einstellungen entweder an einen Speicherort ihrer Wahl zu exportieren und dann nach der Neuinstallation der App erneut zu importieren oder diese Einstellungen auf einem Server zu synchronisieren, damit sie bei der Neuinstallation automatisch verfügbar sind usw. Bei einer Deinstallation sollten Sie keine Spuren hinterlassen.

+0

+1 mucho agreo! –

+1

Lies meine Frage noch einmal: "Ich möchte dem Benutzer im Installer die Wahl geben können". Ich möchte die Wahl geben. –

Verwandte Themen