将多个源行添加到Inno文件部分

时间:2016-11-08 22:57:57

标签: inno-setup

是否有一个函数或预处理器指令可用于向Inno Setup中的Files部分添加多行?例如,我有很多类似于以下的模式:

[Files]
Source: "{#SrcPath}\Dir1\FileName.*"; DestDir: {#DstPath}\Dir1;   
Source: "{#SrcPath}\Dir2\FileName.*"; DestDir: {#DstPath}\Dir2;  
Source: "{#SrcPath}\Dir3\FileName\*"; DestDir: {#DstPath}\Dir3\FileName; Flags: recursesubdirs  

虽然我可以复制并粘贴每一行,但我想知道是否可以做这样的事情?

[Files]
AddFiles(FileName)

不幸的是,我无法在文档或在线中找到任何说明如何执行此操作的示例。这可能吗?

1 个答案:

答案 0 :(得分:0)

使用#define directive定义预处理器宏(模板),如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="options">
  <input class="option" type="checkbox">
  <input class="option" type="checkbox">
  <input class="option" type="checkbox">
</div>

<div class="options">
  <input class="option" type="checkbox">
  <input class="option" type="checkbox">
  <input class="option" type="checkbox">
</div>

<div class="options">
  <input class="option" type="checkbox">
  <input class="option" type="checkbox">
  <input class="option" type="checkbox">
</div>

使用#emit directive扩展模板,如下所示:

#pragma parseroption -p-
#define FileTemplate(str FileName) \
  "Source: \"" + SrcPath + "\\Dir1\\" + FileName + ".*\"; DestDir: " + DstPath + "\\Dir1;\n" + \
  "Source: \"" + SrcPath + "\\Dir2\\" + FileName + ".*\"; DestDir: " + DstPath + "\\Dir2;\n" + \
  "Source: \"" + SrcPath + "\\Dir3\\" + FileName + ".*\"; DestDir: " + DstPath + "\\Dir3; Flags: recursesubdirs"
#pragma parseroption -p+

如果你得到preprocessor to dump a preprocessed file,你会看到代码产生了这个:

#define SrcPath "C:\srcpath"
#define DstPath "{app}"

[Files]
#emit FileTemplate("FileName1")
#emit FileTemplate("FileName2")

实现说明:我没有找到在默认的Pascal样式的预处理器字符串中发出换行符的方法,所以我不得不使用#pragma parseroption -p-临时切换到C风格的字符串。

我发布了一个后续问题:
Emit new line in Inno Setup proprocessor