Si l’utilisateur désinstalle votre programme, que faites-vous des données utilisateur?

Je suis un développeur qui a besoin de munitions.

Si l’utilisateur choisit de désinstaller votre programme, que faites-vous des données que votre programme a conservées dans HKEY_CURRENT_USER et d’autres parties du profil de l’utilisateur?

Le programme stocke les données utilisateur (journaux, etc.) dans les dossiers utilisateur. Le client souhaite une désinstallation pour supprimer toutes ces données … pour tous les utilisateurs. Dans le même temps, un utilisateur non-administrateur ordinaire doit pouvoir effectuer la désinstallation.

Je n’ai pas été en mesure de trouver un livre blanc, de la documentation ou autre qui dit que cela ne devrait pas être fait . La clôture est le post de Raymond Chen: http://blogs.msdn.com/oldnewthing/archive/2007/09/17/4948130.aspx

Mais un article sur le blog est faible en munitions.

Alternative: Créez% SYSTEMDRIVE% \ FooProgramData lors de l’installation. Tous les utilisateurs écrivent dans ce dossier. C’est moche, je sais. Mais c’est le seul moyen que je puisse imaginer qui puisse satisfaire à l’exigence de “désinstaller tous les fichiers à effacer”.

Pensées? J’ai besoin d’un meilleur substitut (s’il en existe un) ou d’un livre blanc solide, d’une documentation ou d’une exigence de logo indiquant que les désinstallation ne doivent pas supprimer les données utilisateur.

    “En même temps, un utilisateur non-administrateur ordinaire devrait pouvoir effectuer la désinstallation.”

    Un compte non-administrateur ne devrait jamais (et ne devrait jamais pouvoir) modifier les données des autres utilisateurs.

    Le plus absolu que vous puissiez faire dans ce cas est de supprimer les données de l’utilisateur actuel, et même dans ce cas, vous devriez demander ou donner un avertissement.

    Allez avec Raymond, ce peut être juste un billet de blog, mais Raymond pourrait être considéré comme un simple blogueur 🙂

    EDIT: je viens de trouver http://msdn.microsoft.com/en-us/library/bb204770.aspx#uninstall_clean mais il ne dit rien explicite sur les données utilisateur

    Les désinstallation doivent supprimer toutes les données du client, sauf si le client ne le veut pas 🙂

    Autrement dit, un programme de désinstallation générique devrait donner à l’utilisateur le choix de supprimer les données ou non.

    Dans votre cas, où vous avez un client qui veut spécifiquement que les données soient supprimées, je suppose que c’est ce que vous allez devoir faire, mais il n’y a pas de moyen propre de le faire si la désinstallation est exécutée par un non-client. -admin sauf si vous proposez et stockez les données à un endroit où chaque utilisateur dispose d’un access complet au système de fichiers.

    Je ne sais pas pour les spécificités de Windows, mais en tant qu’utilisateur je voudrais que mes données ne se perdent pas si je désinstalle un logiciel. Certains arguments sont:

    • D’autres programmes peuvent gérer les mêmes données
    • Je pourrai plus tard changer d’avis et réinstaller le logiciel
    • D’autres personnes pourraient avoir besoin des données, que je pourrais les envoyer par courrier

    La suppression de toutes les données par utilisateur devrait constituer un processus distinct de la désinstallation.

    Ma recommandation (et ce que nous faisons) serait de créer un utilitaire de nettoyage distinct qui doit être exécuté en tant qu’administrateur et énumérer les profils supprimant des fichiers utilisateur supplémentaires. En option, il peut également énumérer les hives du registre des utilisateurs et supprimer des clés de registre supplémentaires. L’un de nos clients dispose de ses propres scripts personnalisés.

    Je fournirais alors au client cet outil de nettoyage et dirais après la désinstallation, si vous souhaitez supprimer toutes les données utilisateur, utilisez-le.

    Considérez les cas suivants

    • Le client désinstalle avant d’installer une nouvelle version
    • Mises à niveau majeures (qui désinstalleront l’ancienne version, vous devez donc en être conscient)
    • Désinstallation accidentelle par un utilisateur qui n’aurait pas dû le faire mais pouvait le faire

    Le moyen le plus propre de supprimer ces données pour tous les utilisateurs auxquels je peux penser serait de tirer parti d’ Active Setup et de l’utiliser pour déclencher un script par utilisateur qui s’exécute la prochaine fois que chaque utilisateur ouvre une session. Les données ne seront pas supprimées lors de la désinstallation, mais à la prochaine connexion. Et vous laisserez traîner quelques entrées de registre, mais cela risquerait moins de provoquer une corruption que l’énumération des profils utilisateur.

    Je ne supprimerais jamais les données utilisateur et / ou de configuration lors de la désinstallation. Si l’utilisateur veut vraiment que tout disparaisse, elle devrait le faire elle-même.

    Je sais que je suis en retard de quelques années à cette fête, mais comme je suis en train de chercher une réponse à cela moi-même en ce moment, je suis tombé sur le nouvel article MSDN suivant: http://msdn.microsoft.com/en-us/ bibliothèque / windows / apps / jj553522.aspx .

    Il concerne les applications Metro Style, mais est probablement pertinent pour d’autres types d’applications. Leur explication donne une distinction bien nécessaire entre différents types de données utilisateur et peut aider un développeur à décider de supprimer un fichier ou non. Sans cette distinction, il est compréhensible qu’il y ait des opinions si différentes sur la nécessité ou non de supprimer des fichiers lors de la désinstallation:

    Les applications gèrent ou interagissent fréquemment avec deux types de données:

    Données d’application

    Données que l’application elle-même crée et gère. Ce sont des données mutables spécifiques aux fonctions internes ou à la configuration d’une application particulière. Il comprend l’état d’exécution, les préférences de l’utilisateur, le contenu de référence (tel que les définitions de dictionnaire dans une application de dictionnaire) et d’autres parameters. Les données d’application sont liées à l’existence de l’application et ne sont significatives que pour cette application.

    Données d’utilisateur

    Données créées et gérées par l’utilisateur lors de l’utilisation d’une application. Il comprend des fichiers de documents ou multimédias, des transcriptions par courrier électronique ou de communication ou des enregistrements de bases de données contenant le contenu créé par l’utilisateur. Notez que les préférences sélectionnées par l’utilisateur ou les options de configuration de l’application sont considérées comme des données d’application et non des données utilisateur. Les données utilisateur sont utiles indépendamment d’une application unique qui peut être utile ou utile pour plusieurs applications. Il s’agit souvent de données que l’utilisateur souhaite manipuler ou transmettre en tant qu’entité indépendante de l’application elle-même, telle qu’un document.

    Notez les phrases montrées ici en italique gras. Si les fichiers en question n’ont pas de sens sans l’application, s’ils contiennent des préférences utilisateur pour cette application (telle que user.config ), elle ne devrait pas être considérée comme des données utilisateur, même si elle se trouve dans un répertoire de données utilisateur. Il doit être considéré comme appartenant à l’application et être supprimé lors de la désinstallation.

    Cela étant dit, je cherche toujours des moyens simples de le faire pour d’autres utilisateurs que l’utilisateur actuel! J’envisage de transférer toutes ces données dans des répertoires pour les données d’application afin que je puisse les supprimer plus facilement et sans avoir à perturber les magasins de données utilisateur de chaque utilisateur.

    Mon récent “smart think” se décline en une recommandation de créer un fichier “readme.txt” dans le dossier de l’utilisateur correspondant lors de la première exécution du programme. Le fichier doit contenir des instructions sur les fichiers de ce qui sont et sur une clause de non-responsabilité avec “n’hésitez pas à nettoyer ce dossier” 🙂

    Juste pour clarifier la question, j’ai créé un autre, spécifiquement lié à la certificateion du logo Windows : Windows Logo propre désinstaller .

    J’ai soulevé un vieux dilemme mais je veux savoir quel choix Microsoft recommande.