2016-05-31 281 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等文件提取可以跳過。