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
...
目前可以使用通配符复制所选文件:
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
...