2016-04-26 100 views
0

我想將所有內容打包到C:\App\Web\*安裝程序。Inno安裝程序:不要安裝子文件夾,如果它已經存在

如果數據庫子文件夾mysql\data存在,那麼我不要想要替換這些文件。

這是我的Inno Setup的腳本:

[Files] 
Source: "C:\App\Web\xampp-control.exe"; DestDir: "{app}"; Flags:  ignoreversion 
Source: "C:\App\Web\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "C:\App\Web\*"; DestDir: "{app}"; Excludes: "C:\App\Web\mysql\data\*"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: DirExists(ExpandConstant('{app}\mysql\data\*')) 

mysql\data的文件仍然被替換。

如果應用程序已安裝(即執行升級),我希望安裝程序避免覆蓋數據文件夾。

回答

0

你在你的腳本兩個問題:

  • 第一項C:\App\Web\*副本的一切無條件。第二項不能改變它。
  • DirExists不支持文件掩碼,您可以使用它來僅測試目錄的存在。刪除尾隨\*

這是正確的做法:

[Files] 
... 

; Always install everything except the mysql\data 
Source: "C:\App\Web\*"; DestDir: "{app}"; Excludes: "C:\App\Web\mysql\data\*"; \ 
    Flags: ignoreversion recursesubdirs createallsubdirs 

; Install the mysql\data, only if is not not exist yet 
Source: "C:\App\Web\mysql\data\*"; DestDir: "{app}\mysql\data"; \ 
    Flags: ignoreversion recursesubdirs createallsubdirs; \ 
    Check: not DirExists(ExpandConstant('{app}\mysql\data')) 
相關問題