【问题标题】:Visual Studio Setup Project: How to delete all legacy files and folders in target folder before install my application?Visual Studio 安装项目:如何在安装我的应用程序之前删除目标文件夹中的所有旧文件和文件夹?
【发布时间】:2017-08-31 07:25:07
【问题描述】:

我正在通过 Visual Studio 安装项目创建一个 Windows 安装程序 (.msi) 文件。 运行 .msi 文件时,如果目标文件夹已经存在并且有一些文件和子文件夹,那么在安装我的应用程序之前如何删除它们? 我已经搜索过但没有找到解决方案。

【问题讨论】:

  • 在什么意义上它们是“遗产”?你是说系统上已经安装了一个产品,该文件夹中有文件吗?您是否将产品升级到同一位置并希望卸载旧版本?
  • @PhilDW:是的。我将我的产品升级到相同的位置,我想卸载旧版本(包括运行时生成的临时文件和文件夹)?

标签: visual-studio windows-installer visual-studio-setup-proje


【解决方案1】:

对于升级,这应该会有所帮助:

https://www.red-gate.com/simple-talk/dotnet/visual-studio/updates-to-setup-projects/?_ga=2.123102924.696294303.1504290215-1234024276.1504290215

基本上更新安装项目的版本,接受更改,在构建升级 MSI 时将 RemovePreviousVersions 设置为 true。此外(不在文章中)您必须增加正在升级的二进制文件的文件版本。这将在安装新版本时卸载旧产品。

帖子没有说明临时文件的位置,但如果它们是数据文件或临时文件,则应用程序不应在(例如)Program Files 文件夹中创建它们,因为它不是推荐的位置(有为临时文件定义的文件夹,例如临时文件夹),并且它需要提升才能在 Program Files 中写入/更新文件,因此该应用程序仅限于管理员用户。

卸载不会删除应用程序创建的文件(您不希望卸载 Word 来删除所有 doc 文件),因此应用程序可能更容易先不在那里创建它们,或者首次启动时将其删除。卸载的正常代码解决方案是在您的旧产品中删除它们的卸载自定义操作,但如果该旧版本已经发布,那么为时已晚。

此外,在全新安装(即使是升级)中,如果您显示浏览对话框以选择应用程序文件夹,用户可以选择安装到另一个位置,这意味着文件留在某个孤立程序中文件夹,例如。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    相关资源
    最近更新 更多