我是需要弹药的开发人员。
如果用户选择卸载您的程序,您如何处理程序在HKEY_CURRENT_USER中保存的数据以及用户配置文件的其他部分?
程序将用户数据(日志等)存储在用户文件夹中。客户希望卸载以删除所有用户的所有数据。同时,普通的非管理员用户应该可以进行卸载。
我无法找到白皮书,文档或其他说不应该的文件。关闭是Raymond Chen的帖子: http://blogs.msdn.com/oldnewthing/archive/2007/09/17/4948130.aspx
但博客文章是弱弹药。
替代方法:在安装期间创建%SYSTEMDRIVE%\ FooProgramData。所有用户都写入此文件夹。我知道这很难看。但这是我能想到的唯一可以满足“on-uninstall-all-files-must-be-cleared”要求的方式。
思考?我需要一个更好的备用(如果存在)或一个固体白皮书,文档或徽标要求,说卸载不应该删除用户数据。
答案 0 :(得分:3)
“与此同时,普通的非管理员用户应该能够进行卸载。”
非管理员帐户永远不应该(并且永远不能)改变其他用户的数据。
在这种情况下,您可以做的绝对最多的事情是删除当前用户的数据,即使这样,您也应该提示或发出警告。
与Raymond一起去,它可能只是一篇博文,但Raymond可能被认为不是普通的博主:)
编辑:我刚刚找到了http://msdn.microsoft.com/en-us/library/bb204770.aspx#uninstall_clean,但没有明确说明用户数据
答案 1 :(得分:2)
卸载应该删除所有客户端数据,除非客户端不希望它:)
或者换句话说,通用卸载程序应该让用户选择是否删除数据。
在你的情况下,你有一个客户特意想要删除数据的地方,我想这就是你将要做的事情,但如果要运行卸载,那就没有干净的方法非管理员除非按照您的建议执行,并将数据存储在每个用户都具有完整文件系统访问权限的位置。
答案 2 :(得分:2)
我不知道Windows的具体情况,但作为用户,我希望如果卸载软件,我的数据不会丢失。一些论点是:
答案 3 :(得分:2)
删除所有每用户数据应该是卸载的单独过程。
我的建议(以及我们的工作)是创建一个单独的“清理”实用程序,该实用程序必须以管理员身份运行,并将通过配置文件枚举删除其他用户文件。可选地,它还可以枚举用户注册表配置单元并删除其他注册表项等。我们的客户端之一拥有自己的自定义脚本。
然后我会向客户提供此清理工具,并在卸载后说,如果要删除所有用户数据,请使用此工具。
考虑以下情况
为我能想到的所有用户删除此数据的最简洁方法是利用Active Setup并使用此方法触发每个用户登录时运行的每用户脚本。卸载期间不会删除数据,但会在下次登录时删除。并且您将留下一些注册表项,但是它不太可能导致损坏而不是枚举用户配置文件。
答案 4 :(得分:0)
卸载时我从不删除用户和/或配置数据。如果用户真的想要它全部消失,她应该自己做。
答案 5 :(得分:0)
我知道我参加这个聚会已经晚了几年,但是由于我现在正在寻找答案,我遇到了以下新的MSDN文章:http://msdn.microsoft.com/en-us/library/windows/apps/jj553522.aspx。
它与Metro Style应用程序相关,但可能与其他类型的应用程序相关。他们的解释给出了不同类型的用户数据之间的一些急需的区别,它可以帮助开发人员决定是否删除文件。如果没有这种区别,可以理解的是,在卸载期间是否删除文件存在不同的意见:
应用经常管理或交互的数据有两种 用:
应用数据
应用程序本身创建和管理的数据。这是可变的 特定于内部功能或配置的数据 特别的应用。它包括运行时状态,用户首选项,引用 内容(例如字典应用程序中的字典定义)和 其他设置。 应用数据与应用的存在紧密相关 只对该应用有意义。
用户数据
用户在使用应用时创建和管理的数据。它 包括文件或媒体文件,电子邮件或通讯记录, 或包含用户创建的内容的数据库记录。 请注意 考虑用户选择的首选项或应用程序配置选项 应用数据,而不是用户数据。 用户数据非常有用 应用程序可能对多个应用程序有用或有意义。通常这是 用户想要作为实体操纵或传输的数据 独立于应用程序本身,例如文档。
请注意此处显示的句子加粗斜体。如果有问题的文件在没有应用程序的情况下毫无意义,如果它们包含该应用程序的用户首选项(例如user.config
),则它不应被视为用户数据,即使它可能位于用户数据目录中。应该认为它属于应用程序并在卸载时删除。
话虽这么说,我仍然在为其他用户寻找简单的方法,而不是当前的用户!我正在考虑将所有数据移动到App数据的目录中,以便我更容易删除它们而不必弄乱个别用户的用户数据存储。
答案 6 :(得分:0)
我最近的“智能思考”建议在程序首次运行时在相应用户的文件夹中创建“readme.txt”文件。该文件应该包含哪些文件的说明以及“免费清理此文件夹”的免责声明: - )
为了澄清这个问题,我又创建了一个,特别是与Windows徽标认证有关: Windows Logo clean uninstall
我提出了一个旧的困境,但想知道微软推荐的选择。