卸载 Winform 应用程序时完全删除所有文件夹和文件?

Posted

技术标签:

【中文标题】卸载 Winform 应用程序时完全删除所有文件夹和文件?【英文标题】:Fully remove all folders and files on uninstall of Winform app? 【发布时间】:2012-05-07 18:11:29 【问题描述】:

卸载我的 Winform 应用程序后仍保留各种文件和文件夹 - 包括内容文件(图片、图标等)和应用程序创建的日志文件夹。对于内容文件:在自定义安装程序项目中,我将“永久”属性设置为 false。对于日志文件夹:我认为这将与其他所有内容一起删除。

我是否缺少 MSI 设置属性,或者我是否需要确定应用程序的根路径并删除覆盖的 Uninstall 方法上的所有内容?

【问题讨论】:

【参考方案1】:

不,没有。 MSI 安装程序不会卸载它没有安装的任何东西,这意味着用户数据、日志文件等会被留下。

这是设计使然 - 如果用户错误地卸载了您的应用并清除了他们所有的财务数据或其他什么,您能想象责任吗?或者如果他们错误地将其他内容保存到您应用的数据文件夹中,而您的卸载程序将其删除?

【讨论】:

感谢您的回复。这对我创建的文件有意义,但内容文件呢?不应该删除吗? 如果文件是由安装程序安装的,并且在卸载运行时它们完全相同,则应将其删除,但满足这两个条件。 好的 - 我意识到在 Content Files 文件夹中,我的应用程序创建了另一个文件 - 这打破了上面的条件。谢谢。【参考方案2】:

查看安装程序会保存有关它安装的所有文件的信息,当调用卸载时,此信息会告诉安装程序要删除哪些文件或文件夹。安装后,如果应用程序或用户创建任何文件夹或文件,这些项目即使在卸载后仍保留在那里。

但是有一个解决方案。您可以在此处OnAfterUninstall 下编写自己的自定义操作

protected override void OnAfterUninstall(IDictionary savedState)

    base.OnAfterUninstall(savedState);
    // Write your code

【讨论】:

以上是关于卸载 Winform 应用程序时完全删除所有文件夹和文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何卸载 Xcode 6 并删除所有相关文件

ArcMap 4 完全卸载ArcGIS

高级安装程序 - 更新时不覆盖文件,但卸载时删除文件

完全卸载MySQL

如何完全卸载 mysql 数据库

如何完全卸载 mysql 数据库