![]() |
PostBuild mit Pause im Batch funktioniert nicht richtig
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)
Im Postbuild soll die Datei (bat) die Signierung durchführen. Jedes Mal beim Ausführen ist die Datei noch in Benutzung!. :roll: Deswegen habe ich 5 Sekunden Timeout eingestellt (timeout /T 5). Problem: Der TimeOut wird im Postbuild ignoriert. Wenn ich die Date normal starte, läuft sowohl der Timeout und die Signierung anstandlos durch...:gruebel: Danke für Infos... |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Dann schreib die Befehle doch eine eine Batch-Datei und starte diese stattdessen, IIRC hab ich das auch schon einmal so gemacht.
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Also in Deinem PostBuild-Ereignis steht als Aufruf <Pfad>\Release.bat?
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Dann hab ich gerade leider auch keine Idee.
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Danke :wink:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Wenn in einem Build Event mehrere Batchdateien aufgerufen werden sollen, muss man sie mit call aufrufen, sonst wird nur die erste ausgeführt. Liegt's evtl. daran?
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
2. es werden alle Zeilen der BAT ausgeführt...nur nicht "timeout" :? PS: Es gab auch Momente, wo das PostBuild direkt komplett fehlerfrei durchlief. Ist aber gaaanz selten. Nachtrag: Beim Erzeugen des Bildes der Fehlermeldung ist mir aufgefallen: 1. Der Fehler tritt nur auf wenn die Zieldatei NICHT existiert. 2. Wenn ich normal erzeuge, mit Ziel vorhanden, wird die Batch fehlerfrei ausgeführt. :shock: ...das erklärt aber nicht die Frage mit dem TimeOut. Es sollte 5 Sekunden gewartet werden, aber die Signierung startet sofort. |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Mal 'ne abgewandelte Version der Batch:
Code:
Was steht in der Error.log im Tempverzeichnis?
@echo %date% %time%>%temp%Error.log
timeout /T 5 /nobreak >>%temp%Error.log if errorlevel 1 ( echo Fehler beim Aufruf von TimeOut.>>%temp%Error.log exit /b 1 ) if not exist "E:\Projects\Projects_Delphi\Tools\Tasks\_out\app\Release\Task.exe" ( echo Task.exe nicht gefunden.>>%temp%Error.log exit /b 1 ) E:\Projects\Projects_Delphi\Certificate\Tools\signtool.exe sign /v /s "Certificate Store" /n "Signierung" /fd SHA256 "E:\Projects\Projects_Delphi\Tools\Tasks\_out\app\Release\Task.exe" if errorlevel 1 ( echo Signierung fehlgeschlagen.>>%temp%Error.log exit /b 1 ) E:\Projects\Projects_Delphi\Certificate\Tools\signtool.exe verify /pa /v "E:\Projects\Projects_Delphi\Tools\Tasks\_out\app\Release\Task.exe" if errorlevel 1 ( echo Verifizierung fehlgeschlagen.>>%temp%Error.log exit /b 1 ) echo Signierung und Verifizierung erfolgreich abgeschlossen.>>%temp%Error.log |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Knapp am Thema vorbei: Für wirklich korrekte Signaturen wird auch die Option /tr benötigt. Vgl.
![]() |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Schau mal in das Ausgabe-Log der IDE nach dem Build. Dort müsste beim timeout Befehl folgende Fehlermeldung erscheinen:
Code:
Wenn es nicht darauf ankommt, dass die IDE auf das Signieren wartet, dann kannst du im Build-Event diesen Befehl eintragen:
FEHLER: Die Eingabeumleitung wird nicht unterstützt. Prozess wird unverzüglich beendet.
Code:
start cmd /C <Pfad>\Release.bat
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
Code:
waitfor /T 5 pause > nul
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Was lange währt wird gut.
Code:
...jetzt wird anstandslos gewartet und die Signierung läuft durch. :zwinker:
waitfor /T 5 pause > nul
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Eigentlich wartet WAITFOR auf ein bestimmtes Signal und der Timeout-Parameter ist für einen "vorzeitigen" Abbruch vorhaden.
Wenn das Signal aber vorher/sofort kommt, dann wird natürlich nicht so lange gewartet. TIMEOUT ist der Befehl zum Warten. (auch wenn man immernoch zu oft den "Hack" mit PING findet) Ich würde in den Scripten immer ein EXIT machen (oder das ErrorLevel/ExitCode setzen), sowohl bei Fehlern, als auch beim OK mit 0. (außer beim Event ist eingestellt, dass die Rückgabe nicht behandelt wird) Zitat:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
Zitat:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Bei soeinem allgemeinen Bezeichner, wie "pause", wäre ich mir da nicht 100% sicher, dass er nicht doch mal verwendet werden könnte.
Diesbezüglich stellt TIMEOUT mit /nobreak für mich irgendwie eine sicherere Variante dar. |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
Zitat:
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Befehle direkt innerhalb der IDE, sowie MSBuild, haben sowieso viele Probleme (vor allem sowas if ERRORLEVEL kann man da vergessen),
aber innerhalb einer Batch sollte es doch gehn? :gruebel: |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Offenbar nicht wenn die Batch den Input/Output umleitet.
|
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Code:
führt zur Fehlermeldung
echo.|timeout /t 5 1>Ausgabe.txt 2>Fehler.txt
Code:
FEHLER: Die Eingabeumleitung wird nicht unterstützt. Prozess wird unverzüglich beendet.
Code:
funktioniert jedoch.
timeout /t 5 1>Ausgabe.txt 2>Fehler.txt
Daraus schließe ich: Bei der Verwendung von TimeOut darf die Eingabe (StdIn) nicht umgeleitet werden. Wenn die IDE beim Aufruf einer Batchdatei StdIn umleitet, wird der Aufruf von TimeOut in der Batchdatei scheitern. |
AW: PostBuild mit Pause im Batch funktioniert nicht richtig
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz