2016-05-31 279 views
-1

IfFileExists命令的结果如何运行三行而不仅仅是第一行。IfFileExists命令运行3个命令行

在下面的代码中是IfFileExists的结果是TemWSConfig,必须执行3行到NaoTemWSConfig命令。

目前2号线和3 TemWSConfig后,始终运行

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

我不知道你在问什么。继续阅读后,似乎是矛盾的。首先,你声明'TemWSConfig'标签运行后的第一行,然后下面两行声称它只是第二行和第三行。 – idleberg

+0

无论如何,你可以检查一些标准的东西。你是否有足够的权利写入'$ INSTDIR'(参见[RequestExecutionLevel](https://github.com/NSIS-Dev/Documentation/blob/master/Reference/RequestExecutionLevel.md)),并且你是否声明了'SetOutPath '在你发布的行之前? – idleberg

回答

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等文件提取可以跳过。