2016-05-31 9 views
-1

Wie führe ich das Ergebnis IfFileExists Befehl drei Zeilen und nicht nur die erste.IfFileExists Befehl 3 Befehlszeilen ausführen

In dem folgenden Code ist das Ergebnis IfFileExists ist TemWSConfig, müssen die 3 Zeilen zum NaoTemWSConfig Befehl ausführen.

Derzeit wird die Linie 2 und 3 nach TemWSConfig, laufen immer

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

Ich bin mir nicht sicher, wonach Sie fragen. Nach weiterem Lesen scheint es widersprüchlich zu sein. Zuerst behaupten Sie, dass nur die erste Zeile nach dem "TemWSConfig" -Label läuft, dann zwei Zeilen unter Ihnen behaupten, es seien nur die Zeilen 2 und 3. – idleberg

+0

Wie auch immer, es gibt ein paar Standard-Dinge, die Sie überprüfen können. Haben Sie ausreichende Rechte, um in '$ INSTDIR' zu schreiben (siehe [RequestExecutionLevel] (https://github.com/NSIS-Dev/Documentation/blob/master/Reference/RequestExecutionLevel.md). Haben Sie auch' SetOutPath 'deklariert 'Vor den Zeilen, die Sie gepostet haben? – idleberg

Antwort

1

NSIS überspringen um nicht wie diese, können Sie überprüfen, ob die problematischen Anweisungen durch den Wechsel aus:

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 

Dieses Mittel Das Problem muss mit der File Anweisung sein. Stellen Sie sicher, dass Sie SetOutPath aufgerufen haben, damit es weiß, wo es extrahiert werden soll. Die Dateiextrahierung kann übersprungen werden, wenn Sie SetOverwrite usw. geändert haben.