当前能够使用通配符复制选定的文件:
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
...