So, da will ich es mal versuchen. Voraussetzung ist, dass ZusiStart das Datenverzeichnis korrekt erkannt hat. So war es bei mir, die Fahrpläne sind sichtbar und es scheitert nur am Button "Ausgewählten Zug fahren".
Wen die Hintergründe nicht interessieren, kann die [Problembeschreibung] überspringen.
[Problembeschreibung]
Zielführend war die Auswertung des logs von ZusiStart
Code: Alles auswählen
C:\Users\USERNAME\AppData\Local\zusistart\zusistart.log
Code: Alles auswählen
DEBUG IpcCommLib.BackgroundProcess - trying to start process: C:\Program Files\Zusi3\ZusiSim.exe
ERROR IpcCommLib.BackgroundProcess - System.ComponentModel.Win32Exception (0x80004005): Das System kann die angegebene Datei nicht finden
ZusiStart befindet sich im richtigen Programmverzeichnis, versucht aber die "ZusiSim.exe" zu starten, die jetzt aber "ZusiSim.64.exe" heißt.
Ich habe im Programmverzeichnis einen Symlink namens "ZusiSim.exe" erstellt, der auf die "ZusiSim.64.exe" verweist. Eine herkömmliche Verknüpfung *.lnk ist dafür nicht geeignet. Ein Symlink ist eine tolle Sache, da er für Programme und Windows aussieht wie eine echte Datei, aber in Wirklichkeit auf eine andere verweist.
Code: Alles auswählen
mklink "C:\Program Files\Zusi3\ZusiSim.exe" "C:\Program Files\Zusi3\ZusiSim.64.exe"
Nun wurde Zusi geöffnet, es wurde aber kein Fahrplan geladen.
Code: Alles auswählen
DEBUG IpcCommLib.BackgroundProcess - trying to start process: C:\Program Files\Zusi3\ZusiSim.exe
FATAL ZusiStart.App - System.InvalidOperationException: Zusi has not been started within 60 seconds.
ZusiStart erwartet also, das der Prozess "ZusiSim.exe" erscheint. Tut er aber nicht, da er jetzt "ZusiSim.64.exe" heißt. Zum Test habe ich Qick&Dirty irgend eine exe genommen, ich glaub es war IrfanView, und habe sie in "ZusiSim.exe" umbenannt und gestartet. Siehe da, ZusiStart hat das aktzeptiert und hat die Zugdaten an das laufende Zusi64 bzw. dessen TCP-Server gesendet.
Code: Alles auswählen
DEBUG ZusiStart.Connection.ZusiSim - Zusi has been started
In Summe muß also folgendes erfüllt sein:
- eine "ZusiSim.exe" im Zusi-Programmverzeichnis oder ein Symlink
- die die echte "ZusiSim.64.exe" startet
- und so lange als "ZusiSim.exe" läuft, bis die echte "ZusiSim.64.exe" beendet wird. Sie muss die ganze Zeit mitlaufen, da sonst ZusiStart wieder maximiert wird.
[Workaround]
Parallel zum Programmverzeichnis von ZusiStart (ich habe es in den Ordner _Tools von Zusi gelegt, kann bei euch woanders sein)
ein neues Verzeichnis anlegen
Im Workaround Verzeichnis eine Batch "ZusiSim.bat" anlegen mit folgendem Inhalt
Code: Alles auswählen
ping 127.0.0.1 -n 2 > nul
start "Zusi" /wait "C:\Program Files\Zusi3\ZusiSim.64.exe"
ping 127.0.0.1 -n 2 > nul
Die beiden Pings entsprechen einer Zeitverzögerung von 1s und sind nur für die Schönheit, damit sich Zusi nicht unmittelbar über das sich minimierende ZusiStart öffnet bzw. beim Beenden von Zusi nicht zeitgleich wieder ZusiStart maximiert wird. Der Parameter /wait bewirkt, dass die Batch erst beim Beenden von Zusi weiter abgearbeitet also beendet wird.
Jetzt brauchen wir eine "ZusiSim.exe" auf Basis der Batch, das geht mit Windows Bordmitteln über IExpress (Windows Button, "IExpress" eintippen, als Admin ausführen). Eine Beschreibung zur Bedienung findet sich hier (nicht das Tool downloaden, die Beschreibung für IExpress steht in den Kommentaren):
https://www.heise.de/download/product/b ... rter-42769
Code: Alles auswählen
***EXE aus bat erstellen***
iexpress.exe mit Admin-Rechten starten (befindet sich in "C:\Windows\System32\")
[x] = "Create a new Self Extraction Directive file." -> Weiter
[x] = "Extract files and run an installation command." -> Weiter
Beliebigen Namen vergeben -> Weiter
[x] = "No prompt" bei "Confirmation prompt" -> Weiter
[x] = "Do not display a license" bei "License agreement" -> Weiter
Im Abschnitt "Packaged files" auf "Add" klicken und die gewünschte BAT/CMD-Datei wählen. -> Weiter
Nun kommt man zu "Install Program to Launch", dort im Feld "Install Program" "cmd /c", gefolgt vom Pfad zur obigen BAT/CMD-Datei einfügen (Beispiel: "emptyrecyclebin.bat" => "cmd /c C:\Pfad\emptyrecyclebin.bat" - Datei ggf. in Anführungszeichen setzen oder entsprechende Pfade/Namen verwenden!).
"Post Install Command" bleibt auf "<None>" -> Weiter
[x] = "Hidden" im Abschnitt "Show window" -> Weiter
[x] = "No message" bei "Finished message" -> Weiter
Auf der Seite "Package Name and Options" mit Klick auf "Browse" den Pfad und Namen der zu erzeugenden EXE-Datei festlegen.
[x] = "Hide File Extracting Progress Animation from User"
[x] = "Store files using Long File Name inside Package" -> Weiter
[x] = "No restart" bei "Configure restart" -> Weiter
(Jetzt hat man die Möglichkeit eine SED-Konfig-Datei zu erstellen, falls man die Einstellungen später nochmal laden möchte.) -> Weiter
"Create package" -> Weiter
Wichtig ist, abweichend zur o.g. Beschreibung im Kommentar: Bei "Install Program to Launch" den Pfad zur Batch in Anführungszeichen zu setzten wegen der Leerzeichen. Und die Option "Store files using Long File Name inside Package" aktivieren.
Wenn alles geklappt hat habt ihr nun eine "ZusiSim.exe" in "C:\Program Files\Zusi3\_Tools\ZusiStart Workaround". Die Batch danach nicht löschen, die wird von der exe benötigt. Zum Testen könnt ihr die exe ausführen. Es müsste sich Zusi öffnen und im Taskmanager parallel zur "ZusiSim.64.exe" die "ZusiSim.exe" existieren, die beim Beenden von Zusi auch beendet wird.
Man könnte die "ZusiSim.exe" jetzt in den Zusi Programmordner verschieben, ich fand es jedoch schöner dort nur eine Verknüpfung liegen zu haben und habe einen Symlink erstellt (Eingabeaufforderung als Admin öffnen).
Code: Alles auswählen
mklink "C:\Program Files\Zusi3\ZusiSim.exe" "C:\Program Files\Zusi3\_Tools\ZusiStart Workaround\ZusiSim.exe
Jetzt sollte ZusiStart wieder wie gewohnt laufen.
Robke hat geschrieben: ↑13.02.2023 10:19:35
Ich weiß nicht ob es dann auch für die Steamversion geht. Holger hat mit derzeit eine Version für Steam angeboten.
Eigentlich sollte dies auch mit einer Steaminstallation laufen. Die Programmpfade musst du wohl an Steam anpassen, die Namen der exe sollten gleich sein.
Ich hoffe es war einigermaßen verständlich und das auch bei euch funktioniert!