Select 许多文件在 Inno Setup 中使用通配符进行安装,install/rename 它们附加了扩展名

Select many files for installation using wildcard in Inno Setup and install/rename them with an extension appended

目前可以使用通配符复制所选文件:

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

但是当尝试添加 DestName 以重命名每个复制的文件并添加 .example 扩展名时,returns 出现错误:

Parameter "DestName" cannot be specified if the "Source" parameter contains wildcards.

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

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

您可以使用 preprocessor 为每个文件生成单独的条目。

[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:\source\foo.ini"; DestDir: "dest"; DestName: "foo.ini.example"; Flags: ignoreversion
Source: "C:\source\bar.ini"; DestDir: "dest"; DestName: "bar.ini.example"; Flags: ignoreversion
...