【问题标题】:InstallShield: Uninstalling program not removing all foldersInstallShield:卸载程序未删除所有文件夹
【发布时间】:2010-10-16 17:01:08
【问题描述】:

我正在使用 Installshield 2010。我进行了基本的 MSI 设置,但在卸载时遇到了问题。

卸载不会删除所有文件夹。

安装完成后卸载,发现还有一条路径。

例如,C:\ProgramFiles\CompanyName\Account\User_1234.xml 仍然存在,而其他一切都消失了。

User_1234.xml 文件由应用程序生成,该文件通常不在安装过程中。所以这是有道理的,为什么这个文件在摆脱它时可能会遇到一些问题(安装程序方面)。

同时,我认为它会被删除,因为它位于CompanyName 文件夹中。

有什么方法可以指定删除里面的所有东西,包括CompanyName 文件夹?

感谢您的任何想法。

【问题讨论】:

    标签: installshield installshield-2010


    【解决方案1】:

    您有几个问题,我将首先解决显而易见的问题。是的,Windows Installer 默认行为是不删除用户数据。这可能是安装程序未安装的文件或自安装程序修改后已修改的文件。要让安装程序删除它们,您必须创建 RemoveFiles 表来教它要删除哪些文件。

    Remove Files Table (Windows Installer)

    现在我将解决不太明显的问题。您不应该期望您的应用程序能够在运行时写入 ProgramFiles。我不知道你的软件是做什么的,但你应该认真考虑你的应用程序设计的这方面。

    【讨论】:

    • 您在 Installshield Express 中是如何做到的?有可能吗?
    • 我不确定你是否可以。 Express 旨在简单,并隐藏了许多 MSI 概念。如果 Express 允许您使用合并模块,我有技巧。我想它会的。
    • Express 可以使用合并模块,但我不明白合并模块如何导致在卸载时删除文件夹。
    • 合并模块只是 Windows Installer 数据库的一部分,它在构建时合并到最终数据库中。合并后就不存在了。这只是将设置逻辑的一部分(在本例中为 RemoveFiles 表信息)抽象为离散块的一种方式。
    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 2012-05-07
    • 2020-04-23
    • 2013-02-20
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2016-11-17
    相关资源
    最近更新 更多