Inno Setup使用通配符选多文件安装并重命名追加扩展名的问题
Inno Setup 通配符批量复制后追加扩展名解决方案
Inno Setup 原生不支持带通配符的 Source 参数搭配 DestName 批量重命名,因为DestName为单文件映射参数,多文件匹配时无法建立一一对应关系,可通过以下优雅方案实现需求:
方案:使用AfterInstall回调逐文件重命名(无需手动遍历源文件)
该方案利用Files段的AfterInstall回调特性,每个通配符匹配到的文件复制完成后会自动触发回调执行重命名逻辑,无需额外编写文件遍历代码。
- 修改
[Files]段配置,添加AfterInstall参数:
Source: "{#source}\name.*.ini"; DestDir: "{#dest}\folder"; Flags: ignoreversion; AfterInstall: RenameToExample;
- 在
[Code]段添加重命名逻辑:
[Code] procedure RenameToExample; var OldFilePath, NewFilePath: string; begin // 获取刚复制完成的目标文件完整路径 OldFilePath := ExpandConstant(CurrentFileName); // 拼接追加.example后缀后的新路径 NewFilePath := OldFilePath + '.example'; // 执行重命名,若需跳过已存在文件可自行添加判断逻辑 if not RenameFile(OldFilePath, NewFilePath) then begin MsgBox('重命名失败: ' + OldFilePath, mbError, MB_OK); end; end;
如果需要更复杂的批量筛选规则,也可以在CurStepChanged事件的ssPostInstall阶段遍历目标目录,批量匹配文件后统一重命名。
内容的提问来源于stack exchange,提问作者notanengineer
相关产品推荐
相关产品推荐

