InstallShield:如何在卸载程序时删除 MSI 不知道的文件和子文件夹?

InstallShield: How to remove files and subfolders that MSI doesn't know when uninstalling a program?

我正在使用 InstallShield 2019 Professional Edition,并且有一个包含可执行程序的 Basic MSI Project。

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

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

Basic MSI Project 中有清空安装目录的选项吗?

我在 Stack Overflow 上找到了与此类似的 question。但是此答案中的 link 不再起作用。为此,我又问了一遍。

如果要删除的文件和文件夹数量已知,您可以使用RemoveFile table指定要删除的文件和文件夹。 InstallShield 在高级部分或直接编辑器中的组件下显示此内容。

https://docs.microsoft.com/en-us/windows/win32/msi/removefile-table

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

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

如果你觉得被遗忘'dirty'认为这是微软的设计指南,在卸载时留下用户数据。