Windows installer InstallShield:如何删除MSI不支持的文件和子文件夹';我不知道什么时候卸载程序?

Windows installer InstallShield:如何删除MSI不支持的文件和子文件夹';我不知道什么时候卸载程序?,windows-installer,installshield,Windows Installer,Installshield,我使用的是InstallShield 2019专业版,有一个基本的MSI项目,其中包含一个可执行程序 我的程序在执行过程中会在安装文件夹中创建一些文件和子文件夹(日志、环境等) 当然,MSI不知道这些文件及其子文件夹是否存在。因此,用户删除程序后,这些文件和文件夹仍保留在计算机上 在基本MSI项目中是否有清空安装目录的选项 我在堆栈溢出上发现了类似的问题。但是这个答案中的链接不再起作用了。出于这个原因,我再次问了这个问题。如果要删除的文件和文件夹数量已知,则可以使用RemoveFile表指定要删

我使用的是InstallShield 2019专业版,有一个基本的MSI项目,其中包含一个可执行程序

我的程序在执行过程中会在安装文件夹中创建一些文件和子文件夹(日志、环境等)

当然,MSI不知道这些文件及其子文件夹是否存在。因此,用户删除程序后,这些文件和文件夹仍保留在计算机上

在基本MSI项目中是否有清空安装目录的选项


我在堆栈溢出上发现了类似的问题。但是这个答案中的链接不再起作用了。出于这个原因,我再次问了这个问题。

如果要删除的文件和文件夹数量已知,则可以使用RemoveFile表指定要删除的文件和文件夹。InstallShield在“高级”部分或direct editor的“组件”下显示了这一点

如果文件位于未知的目录结构中,则必须编写自定义操作

另一方面,有时如果您将应用程序更改为将这些文件放在C:\ProgramData([CommonAppDataFolder])下,而不是放在C:\Program文件下,人们对遗留下来的东西就会变得不那么敏感


如果你被认为是“肮脏”的,你会认为这是微软的一个设计指南,把用户数据放在卸载上。

不,没有办法,你无论如何也不应该这样做。卸载程序无法了解有关这些文件的任何信息,而是故意将它们留下。如果用户将与您的应用程序无关的内容放在同一文件夹中,会发生什么情况?如果用户花费大量时间设置你的应用程序,由于问题决定卸载并重新安装,而你的卸载程序删除了他们的所有数据,会发生什么情况?卸载程序只删除安装程序放在那里的东西是有原因的。子文件夹的数量是固定的吗?([INSTALLDIR]日志[INSTALLDIR]数据)MSI的RemoveFile表可以被告知删除文件和文件夹,但它不能递归处理文件和文件夹。这需要自定义操作。谢谢@ChristopherPaint agan。我解决了这个问题。你能把这条评论贴出来回答吗?然后我可以选择你的答案作为解决方案。我发布了一个答案。