Question

L’application Winform est disponible avec ClickOnce dans notre intranet. Nous stockons les préférences personnelles pour l'interface graphique dans le stockage isolé. Tout fonctionne très bien:)

Le problème, c’est que lorsque nous avons une nouvelle version de l’application, nous publions ... toutes les préférences sont perdues! Les utilisateurs doivent définir leurs préférences sur chaque version.

Existe-t-il un moyen de geler l'isolation de l'ensemble de l'application au lieu de la version?

Était-ce utile?

La solution

Vous devez utiliser application étendue plutôt que domaine étendue, stockage isolé. Pour ce faire, utilisez l'un des constructeurs surchargés IsolatedStorageFileStream .

Exemple:

using System.IO;
using System.IO.IsolatedStorage;
...

IsolatedStorageFile appScope = IsolatedStorageFile.GetUserStoreForApplication();    
using(IsolatedStorageFileStream fs = new IsolatedStorageFileStream("data.dat", FileMode.OpenOrCreate, appScope))
{
...

Toutefois, vous rencontrerez maintenant le problème suivant: ce code ne fonctionne que lorsque l'application a été lancée via ClickOnce, car c'est la seule fois où le stockage isolé avec périmètre d'application est disponible. Si vous ne lancez pas via ClickOnce (par exemple via Visual Studio), GetUserStoreForApplication () lève une exception.

Pour éviter ce problème , vous devez vous assurer que AppDomain.CurrentDomain.ActivationContext est non nul avant d'essayer d'utiliser le stockage isolé par domaine d'application.

Autres conseils

Je travaillais sur une application ClickOnce il y a quelque temps et j'utilisais Environment.GetFolderPath (ApplicationData) - par exemple. dossier de données d'applications itinérantes, pour stocker tous les paramètres. A bien fonctionné et a survécu à de nombreuses mises à jour. Créez simplement un sous-répertoire avec le nom de votre application ou NomSociété / NomApp ou quoi que ce soit et stockez-y tout.

un résumé des autres réponses:

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();//for visual studio
if (System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed)
{
    isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();//for click once applications
}

Vous devez stocker une version permanente des paramètres utilisateur dans un magasin plus durable, tel que la base de données. Votre application peut décider d'utiliser le stockage isolé s'il est disponible. S'il n'est pas disponible (en raison d'une version plus récente), l'application doit extraire les paramètres de la base de données et l'utiliser pour réinitialiser les paramètres dans un stockage isolé. Si les paramètres sont modifiés, vous devez mettre à jour les deux emplacements. Sauf s'il existe une version plus récente de l'application, votre application ne doit pas nécessairement obtenir les paramètres de la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top