排除工作不符合预期的文件?

时间:2011-10-17 17:51:43

标签: inno-setup

我想默认排除2个文件夹,除非选中了某个组件。我没有[Files]部分中单独列出的所有文件,因为将来可能会添加/删除其中的一些文件,但我需要控制2个文件夹。

这是我的代码:

Source: "source\*"; DestDir: {app}; Excludes: "\plugins\api,\plugins\shared memory"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "source\plugins\api\*"; DestDir: {app}; Flags: recursesubdirs createallsubdirs; 
Source: "source\plugins\shared memory\*"; DestDir: {app}; Components: plugins_api;  Flags: recursesubdirs createallsubdirs; 

我想要的是什么:

  • 只有在复制时才能复制这些子文件夹(api和共享内存) 选择了plugins_api。
  • 如果组件plugins_api不是 检查后,不应复制它们。
  • 我宁愿避免包括 .iss文件中的每个文件。这不是一种选择。

我从这段代码中得到了什么:

  • 如果未选中该组件,则不会复制这些文件夹。确定。
  • 如果选中该组件,则不会复制文件夹。不行。

所以看起来第一行的排除会影响其他两行。我怎么能避免这个?

1 个答案:

答案 0 :(得分:3)

2分:

1)您只在其中一个特殊文件夹上有“条目”条目。

2)您拥有的特殊文件夹将直接将其内容安装到{app}文件夹中。 如果您按照正在使用的文件夹:

Source: "source\plugins\api\*"; DestDir: {app};

source\plugins\api\的内容放入{app}

我希望你想要这样的东西:

Source: "source\plugins\api\*"; DestDir: {app}\plugins\api\; Components: plugins_api; Flags: recursesubdirs createallsubdirs;
Source: "source\plugins\shared memory\*"; DestDir: {app}\plugins\shared memory\; Components: plugins_api; Flags: recursesubdirs createallsubdirs;