问题
I use the "Exclude" flag in Inno Setup in order to exclude from installation a subdirectory name "Bin32" or "Bin64" depending on the user's architecture.
All I want is to NOT install the useless folder and ALL its files and subdirectories as well.
Here are my current rules:
[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
First, I don't quite understand what the "*" stands for at the beginning of the excluded rules ? Second, it works fine with all subdirectories inside Bin32/64 folder but the files are still been installed and I can't figure out a way to not install them...
Thx.
回答1:
Each entry is a single operation and is not effected by any other entry. With that in mind, this is what happens:
- The first line installs everying from
z:\work\temp. - The 2nd line, if in 32-bit mode, installs everything from
SourceDirexcept\Bin64 - The 3rd line, if in 64-bit mode, installs everything from
SourceDirexcept\Bin32
I expect that your SourceDir (the script path if not specified) is the same as Z:\Work\Temp and as such, you essentially end up with everything installed anyway.
If you duplicate the first entry, and move the Excludes (without the \ prefix) and Check parameters onto it, it should work as you require:
[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
来源:https://stackoverflow.com/questions/10645269/inno-setup-exclude-a-directory-and-its-files-also