我如何IfFileExists
命令的结果运行三行,而不仅仅是第一行。
在下面的代码中,IfFileExists
的结果是TemWSConfig
,必须执行NaoTemWSConfig
命令的3行。
目前TemWSConfig
之后的第2行和第3行始终在运行
IfFileExists "$INSTDIR\IntegradorWS.exe.Config" TemWSConfig NaoTemWSConfig
TemWSConfig:
File "..\IntegradorWS\bin\x86\Release\AppInstalado.config"
Rename "$INSTDIR\IntegradorWS.exe.Config" "$INSTDIR\Antigo_IntegradorWS.exe.Config"
Rename "$INSTDIR\AppInstalado.config" "$INSTDIR\IntegradorWS.exe.Config"
NaoTemWSConfig:
File "..\IntegradorWS\bin\x86\Release\IntegradorWS.exe.Config"
答案 0 :(得分:1)
NSIS不会像这样跳过,您可以通过切换有问题的说明来验证:
Section
; Fake the IntegradorWS.exe.Config file for this example:
StrCpy $INSTDIR $temp
File "/oname=$INSTDIR\IntegradorWS.exe.Config" "${__FILE__}"
IfFileExists "$INSTDIR\IntegradorWS.exe.Config" TemWSConfig NaoTemWSConfig
TemWSConfig:
DetailPrint "TemWSConfig:1"
DetailPrint "TemWSConfig:2"
DetailPrint "TemWSConfig:3"
NaoTemWSConfig:
DetailPrint "NaoTemWSConfig:1"
; Clean up
Delete "$temp\IntegradorWS.exe.Config"
SectionEnd
这意味着问题必须与File
指令一致。确保您已调用SetOutPath
,以便知道从哪里提取。如果您更改了SetOverwrite
等,则可以跳过文件提取。