Inno setup 如何在卸载过程中删除文件夹?

Inno setup 如何在卸载过程中删除文件夹?,inno-setup,Inno Setup,我的程序在c:\Users\GameDev\AppData\Local\中创建文件。是否可以告诉InnoSetup在卸载过程中删除整个文件夹,即使安装程序没有将其放在那里?要删除与安装程序无关的特定文件夹(因为,如果您没有明确指定,则创建的卸载程序会删除所有文件和目录),请使用该部分。在这里,您可以为您的案例指定如下内容: [UninstallDelete] Type: filesandordirs; Name: "{localappdata}\<my game folder>"

我的程序在
c:\Users\GameDev\AppData\Local\
中创建文件。是否可以告诉InnoSetup在卸载过程中删除整个文件夹,即使安装程序没有将其放在那里?

要删除与安装程序无关的特定文件夹(因为,如果您没有明确指定,则创建的卸载程序会删除所有文件和目录),请使用该部分。在这里,您可以为您的案例指定如下内容:

[UninstallDelete]
Type: filesandordirs; Name: "{localappdata}\<my game folder>"
[卸载删除]
类型:文件和目录;名称:“{localappdata}\”

您的意思是要删除一些与安装程序无关的目录吗?是的,这是正确的。在安装时,此文件夹不存在,因为它是由我的程序在运行时创建的。这是第节的任务,但您始终无法获取正确的用户应用程序数据路径。请注意,卸载程序最多只能删除一个用户的用户文件(它无法清理其他用户拥有的文件)。对于用户数据的一般建议是根本不要删除它——毕竟,如果用户只是卸载以便稍后重新安装,那么他们可能会对丢失数据感到恼火。在这种情况下,您无论如何都不能使用
[UninstallDelete]
。检查参数在安装时测试,而不是卸载时测试;在卸载时无法使此条件化。您必须改用
[code]
。但这不适用于具有单独设置的多用户安装,因为每个用户在程序的{userappdata}文件夹中都有自己的设置。在解决这个问题时,我必须让我的程序在{commonappdata}下保留启动程序的所有用户的设置文件夹列表(通过这样做,创建了上述设置文件夹)。然后,通过在应用程序本身中启动内置卸载例程,使用此列表删除所有这些文件夹。该例程是通过使用命令行参数启动应用程序从Inno卸载程序中的[UninstallRun]启动的。@nyrguds,我怀疑您是否需要为此启动外部程序。您可以在脚本的代码部分编写许多内容。但无论如何,这个答案的要点是使用
[UninstallDelete]
。您将数据存储在何处取决于您。既然OP选择了用户的应用程序数据文件夹,我就按照这个选择去做。@TLama用于删除,是的,但是文件夹路径的存储无论如何都需要由程序自己来完成(我花了很多时间寻找一种从inno循环所有用户的方法,但什么也没有找到),所以这似乎是最优雅的方法。与Inno的pascal脚本相比,我更喜欢用C语言编写代码。至于这个问题,我的评论只是想指出,Inno在多用户安装中对用户文件夹的支持非常差。@TLama,你怎么看?