Inno setup 在Inno安装程序中替换现有文件之前,请重命名该文件

Inno setup 在Inno安装程序中替换现有文件之前,请重命名该文件,inno-setup,Inno Setup,我有以下脚本 [Files] Source: "extractor.prop"; DestDir: "{app}" 如果extractor.prop已经存在,我怎么说呢,将其重命名为extractor.prop.old并安装这个?默认情况下,此时它只删除旧文件,因此如果该文件当前正在客户网站上使用,我不想删除该文件。使用另一个带有外部标志的[Files]条目: [Files] Source: "{app}\extractor.prop"

我有以下脚本

[Files]
Source: "extractor.prop"; DestDir: "{app}"

如果
extractor.prop
已经存在,我怎么说呢,将其重命名为
extractor.prop.old
并安装这个?默认情况下,此时它只删除旧文件,因此如果该文件当前正在客户网站上使用,我不想删除该文件。

使用另一个带有
外部
标志的
[Files]
条目:

[Files]
Source: "{app}\extractor.prop"; DestDir: "{app}"; DestName: "extractor.prop.old"; Flags: external skipifsourcedoesntexist
这就是
外部
所做的:

外部

此标志指示Inno安装程序不静态编译 将源参数指定的文件导入安装文件, 而是从分发媒体或服务器上的现有文件进行复制 用户的系统。有关详细信息,请参见源参数说明 信息


()

您需要使用[code]部分,并编写一些Pascal脚本来完成此操作。另一种方法是在InnoSetup使用
标志:confirmoverwrite uninseneveruninstall
覆盖现有用户可修改的配置文件之前,向用户发出警告。我们声明此文件可由InnoSetup卸载程序卸载。这为用户提供了继续或取消InnoSetup覆盖操作的选项,这是一个好主意。比写一些pascal脚本要好得多+1对我来说,这项工作已经足够了,但当我为我要检查的其他2个文件添加了多行相同的内容时,它首先只重命名了第一个文件,而没有重命名其他文件,现在它没有重命名我要替换的任何文件。知道为什么会这样吗?我发现了问题所在,我没有正确设置
DestDir
,除了文件名之外,它应该与
源代码相同。因为我的工作目录是未定义的,所以它有时可以工作,但有时不能工作。