Every time a new update is released for an application with click once, the variables in the app.config file are destroyed
<userSettings>
<app.My.MySettings>
<setting name="Email" serializeAs="String">
<value />
</setting>
<setting name="UserName" serializeAs="String">
<value />
</setting>
</app.My.MySettings>
</userSettings>
How can i prevent that?
Is there any way of feching the variables from the previous application version?
Do you have the "Applications should check for updates" option checked?
Have a look at Exploring Secrets of Persistent Application Settings (the section titled "Maintaining Settings Between Program Versions"):
For any settings from the current
version that match settings in the
prior version, this routine will
import them into the current version's
user.config file:
At the entry point to your program, place the following code.
if (Properties.Settings.Default.UpgradeSettings)
{
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.UpgradeSettings = false;
}
Note that UpgradeSettings is a boolean user setting (not application) that you need to add yourself, and you want the default value to be True
.
If you use user-level settings instead of application-level settings, it will copy them forward when a new version is retrieved.
The safest thing to do, though, is to separate this data from the ClickOnce update, uh, "experience". See if this helps:
http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/