在Inno Setup中使用通配符选择许多要安装的文件,并安装/重命名它们,并添加扩展名



当前能够使用通配符复制选定的文件:

Source: "{#source}name.*.ini"; DestDir: "{#dest}folder"; Flags: ignoreversion;

但是当尝试添加DestName来重命名每个复制的文件并添加.example扩展名时,它返回一个错误:

参数"DestName"不能指定,如果"源";参数包含通配符

是否有一个优雅的解决方案,或者需要一些函数来重命名每个复制的文件?

在Inno Setup中没有简单的解决方案。

您可以使用预处理器为每个文件生成单独的条目。

[Files]
#define FindHandle
#define FindResult
#sub ProcessFoundFile
#define FileName FindGetFileName(FindHandle)
Name: "{#source}{#FileName}"; DestDir: "{#dest}folder"; 
DestName: "{#FileName}.example"; Flags: ignoreversion
#endsub
#for {FindHandle = FindResult = FindFirst(source + "name.*.ini", faAnyFile); 
FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile
#expr FindClose(FindHandle)

把这个放在脚本的末尾,看看预处理器生成了什么:

#expr SaveToFile(AddBackslash(SourcePath) + "Preprocessed.iss")

你应该得到这样的东西:

[Files]
Source: "C:sourcefoo.ini"; DestDir: "dest"; DestName: "foo.ini.example"; Flags: ignoreversion
Source: "C:sourcebar.ini"; DestDir: "dest"; DestName: "bar.ini.example"; Flags: ignoreversion
...