Inno setup Inno安装程序如何从AfterInstall中排除单个文件

Inno setup Inno安装程序如何从AfterInstall中排除单个文件,inno-setup,pascalscript,Inno Setup,Pascalscript,安装后,我想将一个字符串保存到4个文件中的3个,但目前正在将该字符串保存到所有文件中。如何排除名为“网络”的文件?我在考虑另一个if语句,但不确定如何。此文件将是{app}\configs\network.config 安装前的程序; 开始 如果(FileExists)(ExpandConstant(CurrentFileName)),则 开始 存在:=真; 结束 其他的 开始 存在:=假; 结束; 结束; 安装程序; 开始 如果不存在,那么 SaveStringToFile(ExpandCon

安装后,我想将一个字符串保存到4个文件中的3个,但目前正在将该字符串保存到所有文件中。如何排除名为“网络”的文件?我在考虑另一个
if
语句,但不确定如何。此文件将是
{app}\configs\network.config

安装前的程序;
开始
如果(FileExists)(ExpandConstant(CurrentFileName)),则
开始
存在:=真;
结束
其他的
开始
存在:=假;
结束;
结束;
安装程序;
开始
如果不存在,那么
SaveStringToFile(ExpandConstant(CurrentFileName),#13#10+'SettingEnv'+SettingEnv.Values[0]+#13#10,True);
MsgBox(ExpandConstant(CurrentFileName),mbInformation,MB_OK);
结束;

假设您像这样使用
MyBeforeInstall
MyAfterInstall

[Files]
Source: "*.txt"; DestDir: "{app}"; \
  BeforeInstall: MyBeforeInstall; AfterInstall: MyAfterInstall
然后您可以这样做:

[Files]
Source: "one.txt"; DestDir: "{app}"; \
  BeforeInstall: MyBeforeInstall; AfterInstall: MyAfterInstall

Source: "two.txt"; DestDir: "{app}"; \
  BeforeInstall: MyBeforeInstall; AfterInstall: MyAfterInstall

Source: "three.txt"; DestDir: "{app}"; \
  BeforeInstall: MyBeforeInstall; AfterInstall: MyAfterInstall

Source: "but_not_this_one.txt"; DestDir: "{app}"

这也可以:

[Files]
Source: "*.txt"; Excludes: "but_no_this_one.txt"; DestDir: "{app}"; \
    BeforeInstall: MyBeforeInstall; AfterInstall: MyAfterInstall

Source: "but_not_this_one.txt"; DestDir: "{app}"

另一个选择是:

程序MyAfterInstall;
开始
如果CompareText(ExtractFileName(CurrentFileName),'但不是'this'one.txt')0,则
开始
如果不存在,那么
SaveStringToFile(
当前文件名,
#13#10+'SettingEnv'+SettingEnv.值[0]+#13#10,真);
结束;
MsgBox(当前文件名,MB信息,MB_OK);
结束;

(ntb,在
CurrentFileName
上使用
ExpandConstant
没有意义,因为它的返回值不包含任何常量)

最后一个不会保存到任何文件。第二,无法创建文件。第一个很好用。这对我来说是最好的,因为网络是我唯一需要更新的文件。因为这是我要更新的唯一文件,所以我在其他三个文件上只使用了yifdoesntexist标志。这样做有效吗?还是有更好的方法@MartinPrikryl“Second不能创建文件”是什么意思“那行得通吗”-什么行得通?我不明白你要什么,没关系。我想我明白了。我只是想知道,如果我使用标志onlyfdoesntexist,那么在重新安装或安装新版本时,文件将不会被替换。谢谢大家!@马丁普利