ZusiDisplay unter wine lauffaehig machen (Wunsch)

Die Anzeigesoftware von Jens Haupert.

Moderator: Jens Haupert

Antworten
Nachricht
Autor
sachsedd
Beiträge: 11
Registriert: 16.07.2019 23:00:13

ZusiDisplay unter wine lauffaehig machen (Wunsch)

#1 Beitrag von sachsedd »

Aktuell laeuft bei mit Zusi im wine und ZusiDisplay benoetigt extra eine WindowsVM.
Das herstellen der Serververbindung gleicht auch eher einem Gluecksspiel in dieser Konstellation.

Beim Versuch ZusiDisplay unter wine laufen zu lassen erscheint folgende Meldung: Screenshot
Ich bin zwar nicht deiner Meinung, aber ich werde alles dafuer tun, das du sie aeussern kannst.

Benutzeravatar
F. Schn.
Beiträge: 6630
Registriert: 24.10.2011 18:58:26

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#2 Beitrag von F. Schn. »

Ich wollte auch Johannes mal fragen: Gibt es bereits ausführliche Testergebnisse, etwa Mono vs .Net?

Bei dir ist die Frage: Kommt der Fehler auch, wenn du den internen ZD-Bus abschaltest?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

sachsedd
Beiträge: 11
Registriert: 16.07.2019 23:00:13

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#3 Beitrag von sachsedd »

Der Tip war super.
Jetzt funktionierts. Auch die Verbindungsaufnahme ueber localhost ist stabil.
Beim Schliessen des Einstellungsdialoges kommt zwar eine Exception wegen use after free, die scheint aber keine Auswirkung zu haben.

Was noch aufgefallen ist:
ZusiDisplay laeuft nur auf dem primaeren Monitor, sobald ich es nach rechts auf den Zweiten verschiebe wird wird nichts mehr gezeichnet (wie als ob die Repaintfunktion komplett ihren Geist aufgegen hat).
Zieht man es wieder zurueck auf dem primaeren Monitor funktionierts wieder.

Dann noch etwas, bei dem ich vermute, das es eher Betriebssystemunabhaengig ist:
Der Fahrplan eilt in seiner Position der Zugposition vorraus Screenshot RE 10171.png
Oder wird das nicht mehr richtig synchronisiert, wenn der ZD-Bus abgeschaltet ist?
Ich bin zwar nicht deiner Meinung, aber ich werde alles dafuer tun, das du sie aeussern kannst.

Flo Zille
Beiträge: 201
Registriert: 15.05.2018 09:06:32

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#4 Beitrag von Flo Zille »

Mit Steam ist es recht einfach, Zusi zu starten (einfach Steam Play aktivieren). ZusiDisplay startet allerdings nicht automatisch, also habe ich einen manuellen Versuch unternommen, sowohl über wine (mit installiertem wine-mono) als auch über mono direkt.

Wenn ich es über mono versuche:
FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'BuchfahrplanTools, Version=2.9.7.32718, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
Es wird also wohl eine interne Bibliothek nicht gefunden.

Mit wine sieht es besser aus, aber hier entsteht dann das Problem, dass mono kein WPF unterstützt:
FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
Ich weiß jetzt nicht, wie wichtig WPF für ZusiDisplay ist. Vielleicht ist es für die Erstellung der Display-Inhalte und das Senden dieser an Zusi ja entbehrlich, wenn man keine externen Display-Fenster öffnen will? Das wäre ja schon ein schöner Fortschritt. Und eigentlich benötige ich unter Windows bisher nur das externe EBuLa-Fenster (die im Führerstand integrierten Displays sind mir zu klein) und die FIS-Bediengeräte-Fenster. Falls diese Fenster größtenteils mit anderen Mitteln als WPF "selbstgemalt" sind und dann nur in ein WPF-Fenster eingeblendet werden, ließe sich WPF womöglich relativ leicht umgehen, wenn ein "klassischeres" Windows Forms-Fenster dafür genutzt wird. Auswahl der zu startenden ZD-Displays dann über Kommandozeilenschalter statt luxuriösem WPF-Auswahlfenster. ?(

Allerdings hat der Wunsch bei mir keine hohe Priorität. Ich vermute, dass die Performance unter Linux bei mir relativ mau sein wird, da sie schon unter Windows nicht so toll ist.

Benutzeravatar
Jens Haupert
Beiträge: 4911
Registriert: 23.03.2004 14:44:34
Aktuelle Projekte: http://www.zusidisplay.de
Wohnort: Berlin
Kontaktdaten:

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#5 Beitrag von Jens Haupert »

Hallo,

ich kann mal schauen, warum die Bibliothek verlinkt ist. WPF wird eigentlich nicht genutzt. Ich werde aber keine Aufwände treiben, um ZD unter Linux zum Laufen zu bringen oder den Zustand zu halten.


Grüße
Jens

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#6 Beitrag von Johannes »

WPF braucht er fuer diverse Funktionen aus System.Windows.MessageBox, die er aber nicht wirklich zu verwenden scheint. Ich habe mir eine Stub-DLL gebastelt, damit ist er zufrieden.

.csproj:

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <ProjectGuid>{7CD0320B-B751-4E42-AC7A-33424F38DF8E}</ProjectGuid>
    <OutputType>Library</OutputType>
    <OutputPath>.</OutputPath>
    <RootNamespace>System.Windows</RootNamespace>
    <AssemblyName>PresentationFramework</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
.cs:

Code: Alles auswählen

using System;

namespace System.Windows
{
        class MessageBox
        {
          public static MessageBoxResult Show(String s){Console.Out.WriteLine(s); return MessageBoxResult.OK;}
          public static MessageBoxResult Show(String s, String s2){Console.Out.WriteLine(s);Console.Out.WriteLine(s2); return MessageBoxResult.OK;}
          public static MessageBoxResult Show(String s, String s2, MessageBoxButton b){Console.Out.WriteLine(s);Console.Out.WriteLine(s2); return MessageBoxResult.OK;}
          public static MessageBoxResult Show(String s, String s2, MessageBoxButton b, MessageBoxImage i){Console.Out.WriteLine(s);Console.Out.WriteLine(s2); return MessageBoxResult.OK;}
          public static MessageBoxResult Show(String s, String s2, MessageBoxButton b, MessageBoxImage i, MessageBoxResult r){Console.Out.WriteLine(s);Console.Out.WriteLine(s2);  return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(String s, String s2, MessageBoxButton b, MessageBoxImage i, MessageBoxResult r, MessageBoxOptions o){return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(Window w, String s){return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(Window w, String s, String s2){return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(Window w, String s, String s2, MessageBoxButton b){return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(Window w, String s, String s2, MessageBoxButton b, MessageBoxImage i){return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(Window w, String s, String s2, MessageBoxButton b, MessageBoxImage i, MessageBoxResult r){return MessageBoxResult.OK;}
          // public static MessageBoxResult Show(Window w, String s, String s, MessageBoxButton b, MessageBoxImage i, MessageBoxResult r, MessageBoxOptions o){return MessageBoxResult.OK;}
        }
        public enum MessageBoxResult
        {
        Cancel  ,
        No      ,
        None    ,
        OK      ,
        Yes  
        }
        public enum MessageBoxButton
        {
        OK,
        OKCancel,
        YesNo,
        YesNoCancel,
        }
        public enum MessageBoxImage
        {
        Asterisk,
        Error,
        Exclamation,
        Hand,
        Information,
        None,
        Question,
        Stop,
        Warning,
        }
}

sachsedd
Beiträge: 11
Registriert: 16.07.2019 23:00:13

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#7 Beitrag von sachsedd »

Ich habe bei mir .NET per winetricks installiert.
Bei mir funktioniert jetzt EbuLa, Maschinendisplay und FIS.

Dh. Zusi und ZusiDisplay laeuft bei mir jetzt komplett unter Linux.

@Jens
Es gibt immer mehr Leute die Windows abschaffen. Bitte erhalte den jetzigen Zustand.
Ich bin zwar nicht deiner Meinung, aber ich werde alles dafuer tun, das du sie aeussern kannst.

Benutzeravatar
Jens Haupert
Beiträge: 4911
Registriert: 23.03.2004 14:44:34
Aktuelle Projekte: http://www.zusidisplay.de
Wohnort: Berlin
Kontaktdaten:

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#8 Beitrag von Jens Haupert »

Ich habe den Link zur PresentationFramework entfernt, da die Dialog auch anderweitig angezeigt werden können.
sachsedd hat geschrieben:Es gibt immer mehr Leute die Windows abschaffen. Bitte erhalte den jetzigen Zustand.
Das ist natürlich eine sehr objektive Sichtweise. Die Nutzerzahlen von Linux auf dem Desktop haben sich seit Jahren nicht nennenswert geändert. Wenn es "zufällig" funktioniert ist es prima, falls es durch einen Änderung in der Zukunft nicht mehr geht => ist es halt so. Die Voraussetzungen für Zusi und ZD sind halt Windows. Und nur die Firma Hölscher alleine weiß, warum die Homepage immer noch Windows XP und Vista (die beide keinen Support mehr haben) ausweist. Offtopic: ebenso warum da 2,5GB Festplattenplatz angegeben werden, obwohl bei mir schon 4,4GB belegt sind.

Grüße
Jens

skbla
Beiträge: 1
Registriert: 08.09.2019 17:30:50

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#9 Beitrag von skbla »

Hallo miteinander,

ich habe Zusi letzten Freitag in der Aerosoft-Version über Steam gekauft. Der Simulator selbst läuft wunderbar über Steam Play/Proton. Dies gilt leider nicht für ZusiDisplay, es scheitert wohl an WPF.

Über Wine mit .net Version 4.0, unter Nutzung eines 32-bit-Wineprefixes bekomme ich ZusiDisplay (Version 3.3.11.0) grundsätzlich zum Laufen. Leider habe ich aber auch den "Request not supported"-Fehler. Also bin ich auf diesen Thread hier gestoßen und wollte dann folgenden Lösungsvorschlag ausprobieren:
F. Schn. hat geschrieben:Bei dir ist die Frage: Kommt der Fehler auch, wenn du den internen ZD-Bus abschaltest?
Über den internen ZD-Bus habe ich in der ZusiDisplay-Dokumentation nichts gefunden, in den Einstellungen habe ich die per Default aktivierte Option "Interner Bus für Diagnosedisplays verwenden" gefunden. Die Checkbox habe ich abgewählt, aber beim Speichern tritt leider eine andere Exception auf...:

Code: Alles auswählen

************** Exception Text **************
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Button'.
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Control.get_Handle()
   at System.Windows.Forms.Control.PointToScreen(Point p)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Ist es überhaupt diese Option, die ich abwählen muss?

Falls ja, es scheint ja ein GUI-Fehler zu sein. Kann man diese Option irgendwo in der ZusiDisplay.exe.config deaktivieren, welchen XML-Tag muss ich da wo hinzufügen?

Falls nein: Wo kann ich diesen "internen ZD-Bus" abschalten?

Es ist irgendwie ein bisschen schade, dass nur bei manchen Strecken ein Buchfahrplan ohne ZusiDisplay angezeigt wird. Aktuell beschränkt sich mein Spielvergnügen auf diese Strecken, weil der Schummelmodus halt doch nicht so als Buchfahrplan-Ersatz taugt...

Danke im Vorraus!

sachsedd
Beiträge: 11
Registriert: 16.07.2019 23:00:13

Re: ZusiDisplay unter wine lauffaehig machen (Wunsch)

#10 Beitrag von sachsedd »

Der Object-Fehler Button kommt bei mir auch, macht aber nix, die Einstellung wird trotzdem gespeichert.

Ich hatte bis jetzt immer einen Buchfahrplan, egal bei welcher Strecke.
Wo geht es denn bei dir schief?
Ich bin zwar nicht deiner Meinung, aber ich werde alles dafuer tun, das du sie aeussern kannst.

Antworten