当前位置: 首页 > 知识库问答 >
问题:

向Inno文件部分添加多个源代码行的函数

宰父淳
2023-03-14

有没有一个函数或预处理指令可以用来在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个答案

司徒锐进
2023-03-14

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

#define FileTemplate(str FileName) \
  "Source: """ + SrcPath + "\Dir1\" + FileName + ".*""; DestDir: " + DstPath + "\Dir1;" + NewLine + \
  "Source: """ + SrcPath + "\Dir2\" + FileName + ".*""; DestDir: " + DstPath + "\Dir2;" + NewLine + \
  "Source: """ + SrcPath + "\Dir3\" + FileName + ".*""; DestDir: " + DstPath + "\Dir3; Flags: recursesubdirs"

并使用< code>#emit指令展开模板,如下所示:

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

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

如果让预处理器转储一个预处理文件,您将看到代码会产生以下结果:

[Files]
Source: "C:\srcpath\Dir1\FileName1.*"; DestDir: {app}\Dir1;
Source: "C:\srcpath\Dir2\FileName1.*"; DestDir: {app}\Dir2;
Source: "C:\srcpath\Dir3\FileName1.*"; DestDir: {app}\Dir3; Flags: recursesubdirs
Source: "C:\srcpath\Dir1\FileName2.*"; DestDir: {app}\Dir1;
Source: "C:\srcpath\Dir2\FileName2.*"; DestDir: {app}\Dir2;
Source: "C:\srcpath\Dir3\FileName2.*"; DestDir: {app}\Dir3; Flags: recursesubdirs

对于NewLine预定义的预处理器变量,您需要Inno Setup 6。另请参阅在Inno Setup预处理器中发出新行。

 类似资料:
  • 基本的问题是在多个文本文件中添加一些公共数据。我编写的SAS程序的输出是文件夹中的许多文本文件,比如30到50个文本文件,现在我必须在每个文件的顶部添加一个手机号码。现在,我通过手动复制号码,然后打开文本文件,然后粘贴号码来实现这一点。有人能给我推荐一种替代方法吗?可能是SAS程序或类似的东西。 提前谢谢。

  • 问题内容: 我需要能够向ELF文件添加任意部分。我无法在该程序中使用GPL代码,因此BFD成为不可能。我可以使用libelf / gelf来阅读节,但是这些文档很少,因此我无法弄清楚如何添加节。有人知道怎么做这个吗?我宁愿不编写自己的ELF代码。 问题答案: 关于ELF文件标头的问题有几个(可能)相关答案。提到的接受的答案用于将部分添加到ELF文件,并且BSD bintools 声称具有BSD许可

  • 我在进行 Inno 设置时遇到问题。 我在这里的部分使用分辨率检测脚本: INNO设置:如何获取主监视器的分辨率? 现在,我想将< code>xres和< code>yres值放入安装程序的< code>[Registry]部分,如下所示。 我尝试了这种方法如何在 Inno Setup 中使用 Pascal 变量?,但我无法让它工作。我多次尝试自己解决问题,但我放弃了...... 有人能帮我解释一

  • 问题内容: 我的PyQT QTextEdit遇到一个相当奇怪的问题。 当我从QLineEdit输入一个字符串时,它会添加它,但是说我输入另一个,第一个字符串就会消失,我认为那是因为我没有追加文本。 知道我该怎么做吗? 以下是相关代码: 和重要的 编辑 我发现我需要使用 问题答案: 该方法将替换所有当前文本,因此您只需要使用该方法即可。(请注意,这两种方法都会自动添加尾随换行符)。

  • 8.2.1 代码介绍 用户与网站的交互动作,可利用事件统计代码进行统计。 (简单)事件统计可支持统计3个维度,1个指标的用户交互动作, 代码如下: stm_clicki('send', 'event', '事件分类', '事件动作', '事件标签', 1); 在使用时,替换以上中文内容即可。 其中, 字段名称 数据类型 字段含义 使用注意项 Category 字符串 事件分类 必填项 Action