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'认为这是微软的设计指南,在卸载时留下用户数据。
我正在使用 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'认为这是微软的设计指南,在卸载时留下用户数据。