2015-02-07 143 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
  • 在最後的安裝程序會嘗試再次刪除文件夾(成功)