是否有一个函数或预处理器指令可用于向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)
不幸的是,我无法在文档或在线中找到任何说明如何执行此操作的示例。这可能吗?
答案 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