2012-05-18 15 views
4

我使用Inno Setup中的「排除」標誌,以便根據用戶的體系結構從安裝中排除子目錄名稱「Bin32」或「Bin64」。Inno Setup:排除一個目錄及其文件

我只想安裝無用的文件夾及其所有文件和子目錄。

這裏是我目前的規則:

[Files] 
Source: "Z:\Work\temp\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 

; Exclude 
Source: "*"; Excludes: "\Bin64"; DestDir: "{app}"; Flags: recursesubdirs; Check: not Is64BitInstallMode 
Source: "*"; Excludes: "\Bin32"; DestDir: "{app}"; Flags: recursesubdirs; Check: Is64BitInstallMode 

首先,我不太明白在排除規則開始什麼「*」代表什麼嗎? 其次,它適用於Bin32/64文件夾內的所有子目錄,但文件仍然安裝,我不能找出一種方法來不安裝它們...

Thx。

+0

你試過'「\ bin64適用\ *」 '? –

+0

是的,我有...沒有幫助:( –

+0

也許嘗試Bin64而不是\ Bin64? – rogerdpack

回答

8

每個條目是一個單獨的操作,不受任何其他條目的影響。考慮到這一點,這是發生了什麼:

  1. 第一行從z:\work\temp安裝萬萬。
  2. 第二行,如果在32位模式下,安裝了從SourceDir除了\Bin64
  3. 第三行,如果在64位模式下,安裝了從SourceDir除了\Bin32

我期待你的SourceDir(腳本路徑如果未指定)與Z:\Work\Temp相同,因此,基本上最終會安裝所有內容。

如果複製的第一個條目,然後移動Excludes(不\前綴)和Check參數到它,因爲你需要它應該工作:

[Files] 
Source: "Z:\Work\temp\*"; Excludes: "Bin64"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not Is64BitInstallMode 
Source: "Z:\Work\temp\*"; Excludes: "Bin32"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: Is64BitInstallMode