IfFileExists 命令 运行 3 个命令行

IfFileExists command run 3 command lines

如何 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"  

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

,则可以跳过文件提取