2015-02-07 279 views
1

我的应用程序设置为应用程序将写入的日志文件创建一个新目录。使用Inno Setup卸载已创建的日志文件

[Dirs] 
Name: "{app}\log"; Permissions: users-modify 

现在,当它被卸载时,我想要删除日志文件以及日志目录。这通常不会发生,因为日志文件对于卸载程序是未知的,并且不会被删除,并且日志目录不是空的,因此它也不会被删除。

所以我加入这个来删除这些文件:

[UninstallDelete] 
; Delete log files 
Type: files; Name: "{app}\log\*.log"; Check: not IsDowngradeUninstall 

注意,这不应该是由其他代码确定降级卸载发生。

现在我对Inno Setup文档感到困惑。它说项目最后处理,我。即删除从其他部分创建的任何内容后。这是否意味着使用此代码我的日志文件将被删除,但日志目录不是?我还需要重复这样的事情在UninstallDelete部分:

Type: dirifempty; Name: "{app}\log" 

哦,我可能还需要一个{app}本身,因为它已经不能只要“日志”中删除了仍然存在......

如果Inno Setup可以按照他们实际上可以工作的方式排列东西,那它会不会更聪明?还是它已经这样做?

+0

如果要删除整个目录,最好使用['filesandordirs'] (http://www.jrsoftware.org/ishelp/index.php?topic=uninstalldeletesection&anchor=filesandordirs)标志,而不仅仅是“文件”。 – TLama 2015-02-07 21:50:34

+0

是的,但我想只删除我知道的文件类型。如果用户放置了其他东西,我也不想删除它。因此文件模式。 – ygoe 2015-02-07 21:54:55

回答

0

如果是由安装程序创建的,则不需要手动添加该文件夹的删除。

您可以使用/ LOG命令行参数运行卸载程序。 你会发现在日志(在用户的临时文件夹)以下事件:

  • 安装程序试图删除文件夹,但它没有因为里面一些意想不到的文件。它还表示稍后会重试。
  • 安装程序执行你的代码,删除* .LOG
  • 在最后的安装程序会尝试再次删除文件夹(成功)