[gelöst] sPlan 8, Direct 2D und Linux (wine)

Antworten
Sabu
Beiträge: 11
Registriert: Donnerstag 7. Oktober 2021, 14:05

[gelöst] sPlan 8, Direct 2D und Linux (wine)

Beitrag von Sabu » Montag 27. Dezember 2021, 01:50

Hallo,

Die Vollversion von sPlan 8 habe ich unter Linux mit wine installiert und es läuft.
Daher möchte ich hier eben kurz beschreiben, was ich gemacht habe, weil lt. ABACOM die 8er Version von sPlan Microsofts Direct 2D aka D2D benutzt.

Edith [9.1.2022]: Die Sache hier mit /NoD2D scheint outdated zu sein. Im 4. Beitrag steht, wie es mit Direct 2D geht.

Installation
Die online gekaufte Version liegt bei mir im Download Ordner /home/Sabu/Downloads/Setup_sPlan80.exe
Die Installation habe ich von der Shell aka Kommandozeile aus gestartet.

Code: Alles auswählen

~$> pwd
/home/Sabu
~$> wine Downloads/Setup_sPlan80.exe
Die erscheinenden Meldungen mit 'fixme' können ignoriert werden.
0024:fixme:thread:GetThreadUILanguage : stub, returning default language.
0024:fixme:nls:RtlGetThreadPreferredUILanguages 00000038, 0032D97C, 00000000 0032D9A4
...


Bei der Standard-Windows Installation sollte alles wie gewohnt laufen. Es muss nichts an Pfaden o. ä. während der Installation geändert werden. Nach der Installation hat man ein neues Icon auf dem Desktop, es ist bei der Installation auch so defaultmäßig aktiviert.

Bevor man jetzt aber auf das Icon klickt um sPlan zu starten muss man ein kleine Änderung vornehmen.
Im Ordner 'Desktop' bzw. 'Schreibtisch' (je nach Systemsprache) gibt es ein File namens 'sPlan 8.0.desktop'. Das ist ein Textfile und muss mit einem Editor (z. B. nano) geändert werden um das D2D abzuschalten.
In der 3. Zeile (Exec=...) muss am Ende der Parameter /NoD2D angefügt werden. Danach sieht es so bei mir aus:

----8<----------8<----------8<---------
[Desktop Entry]
Name=sPlan 8.0
Exec=env WINEPREFIX="/home/Sabu/.wine" wine C:\\\\users\\\\Public\\\\Desktop\\\\sPlan\\ 8.0.lnk /NoD2D
Type=Application
StartupNotify=true
Path=/home/Sabu/.wine/dosdevices/c:/Program Files (x86)/sPlan80
Icon=0E15_sPlan80.0
StartupWMClass=splan80.exe
----8<----------8<----------8<---------

Alternativ geht es auch über die Eigenschaften oder so ähnlich (rechtsklick auf das Icon). Dann bei Command den Parameter /NoD2D anfügen.
Bild

Damit startet sPlan8 ohne D2D und läuft dennoch WESENTLICH!! schneller im Grafikaufbau als die Version 7 ohne D2D. Mit aktiviertem D2D (default) läuft sPlan 8 nicht und direkt beim Starten gibt es irgendwelche Hinweisfenster ohne Text, die wahrscheinlich auf einen Fehler hinweisen sollen. Bei einem der Fenster ist oben rechts das Kreuz (schließen), nur damit kann man ohne weitere Maßnahmen wie z. B. über den Scheduler (System Monitor, Process Table u. ä. bzw. über die Shell mit

Code: Alles auswählen

~$> kill -9 `ps -o pid=  -C sPlan80.exe`
den Fehlstart beenden.

Sollte sPlan 8 irgendwann mal scheinbar nicht reagieren, dann liegt es daran, dass ein Fenster hinter dem Hauptfenster aktiv ist und auf eine Eingabe wartet. In dem Fall kann man es hervorholen, wenn man in der Taskleiste bei KDE (bei Gnome, XFCE, u.a. weiß ich es nicht) doppelt auf den sPlan-Task klickt. Alternativ kann man auch oben rechts das Fenster verkleinern bzw. verschieben. Aufpassen würde ich mit der "Fenster verschwinden lassen" Funktion, wie sie auch von "show desktop" gebraucht wird. In der Vergangenheit hatte ich mit sPlan 7 öfter das Problem, dass das Hauptfenster sich nicht mehr hervorholen ließ bzw. in den Vordergrund geholt werden konnte bzw. es geht nur über irgendwelche Tricks.

Deinstallation
Wenn es eine sPlan7 oder sPlan8 (Demo) geben und die soll/kann weg, dann lässt sich das mit

Code: Alles auswählen

~$> wine uninstaller
machen. Dann ploppt ein Fenster auf mit allen installierten Programmen und das, was weg kann, .... genau. Alles weitere dazu steht dann da.
Zuletzt geändert von Sabu am Sonntag 9. Januar 2022, 15:08, insgesamt 3-mal geändert.

Sabu
Beiträge: 11
Registriert: Donnerstag 7. Oktober 2021, 14:05

Re: sPlan 8 und Linux (wine)

Beitrag von Sabu » Mittwoch 5. Januar 2022, 16:27

Update:
Wenn sPlan80 mit dem Parameter /NoD2D gestartet und beendet wurde, wird das File SPLAN80.INI in ~/.wine/drive_c/ProgramData/sPlan80/SPLAN80.INI geschrieben. Darin gibt es dann den Eintrag unter [Gerneral] UseD2D=0 (Zeile 29 in meinem Fall). Sollte also Direct2D mal laufen mit sPlan80, dann müsste der Eintrag auf UseD2D=1 geändert werden. Es reicht also, einmal sPlan80 manuell = von der Kommandozeile = aus der Shell heraus zu starten mit dem Parameter /NoD2D und dann zu beenden. Beim Beenden von sPlan80 das SPLAN80.INI File geschrieben mit UseD2D=0. sPlan80 einmal manuell zu starten mit Parameter macht die Sache etwas sauberer, weil es dann nur noch eine Stelle gibt, wo angegeben wird, ob von Direct2D gebraucht wird. Soweit ich weiss gibt es keinen "Gegenparameter" zu /NoD2D, sowas wie /YesD2D, den man dann dazu verwenden könnte, um den Eintrag in der SPLAN80.INI auf UseD2D=1 zu ändern. Kurzum, bevor man sich einen Wolf sucht warum D2D nicht läuft, sollte der Parameter nur an einer Stelle geändert werden und nicht von irgendwoher überschrieben werden können.

Derzeit bin ich am suchen, ob es eine Möglichkeit gibt, Direct2D zu gebrauchen, denn implementiert ist Direct2D in den Wine-Libraries schon seit einigen Jahren. Es laufen ja auch jede Menge Spiele mit Direct3D.

Sabu
Beiträge: 11
Registriert: Donnerstag 7. Oktober 2021, 14:05

Re: sPlan 8 und Linux (wine)

Beitrag von Sabu » Donnerstag 6. Januar 2022, 03:10

Noch ein kleines Update:
Wenn ich sPlan80 mit der Umgebungsvariable WINEDLLOVERRIDES="d2d1=n" starte (s. u.), erhalte ich eine klare Fehlermeldung zu Direct2D, aber nur wenn das auf der Kommandozeile = Shell passiert. Sieht so aus:
Bild
Immerhin eine deutliche Reaktion. Wenn die Umgebungsvariable in die 'Properties --> Application --> Command' vom Desktop Icon als Parameter zugefügt wird, erscheint die Fehlermeldung nicht auch wenn der Parameter /NoD2D am Ende der gleichen Zeile weg ist. sPlan80 startet normal und nach dem Beenden wird eine SPLAN80.INI erstellt, in der dann unter

Code: Alles auswählen

[General]
...
UseD2D=0
...
steht (Zeile 29 bei mir), was bedeutet, dass kein Direct 2D verwendet wird.

Die tausenden von Fehlermeldungen bzgl. D2D in der Shell wie diese:

Code: Alles auswählen

0024:fixme:d2d:d2d_device_context_DrawGeometry Ignoring stroke style 009F1350.
erscheinen auch nicht mehr mit der Umgebungsvariablen WINEDLLOVERRIDES zudem konnte ich bisher keine Lösung zu dem Problem finden. Möglicherweise hat das was mit dem Zusammenspiel von Grafikkartentreiber und Direct 2D zu tun. Ich benutze eine AMD Radeon GraKa.
---
Der ganze Befehl:

Code: Alles auswählen

~$ WINEDLLOVERRIDES="d2d1=n" wine .wine/drive_c/Program\ Files\ \(x86\)/sPlan80/sPlan80.exe

Sabu
Beiträge: 11
Registriert: Donnerstag 7. Oktober 2021, 14:05

Re: sPlan 8 und Linux (wine)

Beitrag von Sabu » Samstag 8. Januar 2022, 23:35

Wieder ein Update :D

Good news: das GDI/Direct 2D Problem ist gelöst! sPlan80 scheint auch unter Linux mit Wine und Direct 2D (D2D) zu laufen :!:

Bug: Dabei ist mir allerdings aufgefallen, dass sPlan 8 möglicherweise einen Bug enthält (Gleitkommadivision durch 0), ähnlich oder gleich diesem Fehlerbild: https://forum.abacom-online.de/phpBB3/v ... f=7&t=5730

Update zum Update
Die nachfolgende Beschreibung bezieht sich auf Linux-Installationen, wo es mit Direct 2D nicht funktioniert. Bei mir war das unter Arch auf dem PC. Auf dem Laptop mit Manjaro und wine 7.0-r2 läuft es anfänglich scheinbar auch, aber wenn ich eine Zeichnung lade bekomme ich die Fehlermeldung "Gleitkommadivision durch Null" und die Zeichnung ist nur teilweise oder garnicht sichtbar.

Zuerst zum Bug: Seit neuestem habe ich einen 4k Monitor mit 27 Zoll = 163 dpi. sPlan startet unter Wine mit dieser Pixeldichte nicht sondern beendet sich mir der Fehlermeldung "Gleitkommadivision durch Null". Diese Meldung erscheint 2x und dann kommt ein Fenster ohne Text und durch das X oben rechts kann ich sPlan killen. Wenn ich in der Wine-Konfiguration die Schriftgröße auf dem Standardwert 96 dpi belassen und die Schrift damit sehr klein ist, läuft sPlan 8, allerdings ist die Zeit, die sPlan braucht um komplett gestartet zu sein hammerharte 65 Sekunden! Nach ca.36 Sekunden ist das Fenster da, die Icons oben fehlen aber noch, nach weiteren 28-29 Sek. sind dann auch die Icon da.

Zur DPI-Zahl Einstellung: Ich meine dabei dieses Fenster, dass es auch bei Windows gibt. Der Unterschied zw. normal großer Schrift und der Mikroschrift wird deutlich, wenn man die Kopfzeile und den Text im Fenster vergleicht.
Bild

Wenn ich hier den Wert auf 163 dpi ändere, was dann eine normal Schriftgröße ergeben würde, steigt sPlan 8 bei starten mit der Division durch Null Geschichte aus. Erst wenn ich 140 dpi oder weniger einstelle, läuft sPlan 8, bei 141 dpi ist also die "Ausstiegsgrenze erreicht". Keine Ahnung ob das ein Wine-Problem ist, ich denke, das wird möglicherweise auch unter Windows passieren, wobei Wine sich wie eine Windows 7 Installation verhält (alternativ könnte ich auch auf Windows 8, 8.1, 10 oder auch XP umstellen). Wine ist aber kein Emulator, sondern biegt lediglich die Windows Systemaufrufe auf POSIX-Systemaufrufe um (Wine heißt deswegen auch nicht Windows Emulator).

---

Direct 2D und wie man es ans Laufen bekommt. Hier der Beweis (Anm.: ein echter Beweis ist das nicht, weil die Direct2D Funktionalität wird erst dann sichtbar, wenn eine Zeichnung geladen worden ist. Beim Laden und bei nicht funktionierendem Direct2D kann der Fehler ¨Gleitkommadivision durch Null" auftreten.):
Bild
(Dass es ein Screenshot von Wine ist, erkennt man an dem Weinglas oben links im Fenster.)
D2D ist aktiv, die DPI-Zahl (Vergleich Fensterkopfzeile und -inhalt) ist eingestellt auf 163 DPI.
Ergänzend: Im Umkehrschluss würde das heißen, dass man sPlan 8 bei Monitoren mit hoher Pixeldichte nur mit D2D ans laufen bekommt. Jetzt müsste ich nochmal versuchen, ob sPlan dann auch im 30-bit Modus (3x10 Bit Farbtiefe) läuft.

Nach etwas forschen dachte ich zuerst, dass es mit dem Zusammenspiel zwischen der D2D Library und AMD Grafiktreibern klemmt, aber es scheint doch wohl die von Wine mitgebrachte D2D Library zu sein, die da Probleme macht.

Ich habe jetzt eine originale d2d1.dll von dll-files.com gezogen, und zwar die Version 7.0.6002.18107 (gibt es nur als 32-Bit Version, steht fast ganz unten in der Liste). Das ZIP auspacken und die darin enthaltene d2d1.dll (810 kB) ins Programmverzeichnis von sPlan80 kopieren, wo sPlan80.exe liegt (standardmäßig unter ~/.wine/drive_c/Program Files (x86)/sPlan80). Im SPLAN80.INI File den Eintrag UseD2D=1 setzen sofern das File vorhanden ist (unter ~/.wine/drive_c/ProgramData/sPlan80/) und der nicht auf 0 steht. Der Parameter /NoD2D im Startup Kommando des Desktop-Icons (rechtsklick --> Properties --> Application --> Command: ...) muss natürlich dazu raus falls vorhanden.
Ergänzung: Direct 2D funktioniert auch, wenn man Wine auf das immitieren von Windows 10 stellt. Außerdem funktioniert das auch mit der neueren Version 10.0.19041.329, aber nur in der 32 Bit Version. Mit der 64 Bit Version gibt es eine Fehlermeldung.

(1) Am einfachsten ist es, die von dll-files.com gezogene d2d1.dll in das Programmverzeichnis von sPlan80.exe zu kopieren, das ist auch lt. Wine-Doku kein Problem, auch bei Wine-Updates bleibt es erhalten, daher nicht dahin kopieren, wo Wine installiert ist, z.B. nach /usr/lib/wine/x86_64-windows/ und /usr/lib32/wine/i386-windows/.

(2) Wine mitteilen, dass Wine eine native Version von d2d1.dll (= D2D) benutzen soll, also nicht die im Wine-Paket enthaltene d2d2.dll. Dazu "winetricks" starten. Im Auswahlfenster zuerst "Standard Wineprefix auswählen" aktivieren und <OK>, dann "winecfg starten" auswählen und <OK>, es erscheint die Wine Configuration (s. Bild oben mit den DPI). Im Tab Application, Liste "Application Settings" sollte sPlan80.exe stehen. Wenn nicht, dann manuell zufügen (Add application ... und dann den Pfad zur sPlan80.exe zusammenklicken). Hier sollte letztlich sPlan80.exe ausgewählt sein. Welche Windows Version im unteren Teil stehen sollte, weiß ich nicht genau. Durch meine Versuche steht da jetzt zufällig Windows 7, normalerweise steht da meine ich "Use global settings" und unter dem Eintrag "Default Settings" im Fensterteil darüber steht dann bei mir Windows 7, macht also letztlich keinen Unterschied. Mit der downgeloadeten d2d1.dll funktioniert das aber. Evtl. läuft es besser, wenn man bspw. Windows 10 einstellt und eine 10.0.xxxx.xxxx Version von d2d1.dll runterlädt. Ausprobiert habe ich es noch nicht.
Bild

(3) Dann einen Tab weiter nach "Libraries" gehen. Im oberen Drop-Down Teil "New override for library" die Library d2d1 raussuchen und auf "Add" klicken. Im unteren Fenster "Existing overrides" erscheint nun "d2d1 (native, builtin)". Da "builtin" nicht funktioniert, habe ich mit "Edit..." diese Einstellung auf nur native geändert. Dann sollte das so aussehen:
Bild

Damit wäre das Workaround abgeschlossen und sPlan 8 sollte ohne Fehlermeldung innerhalb ein paar Sekunden starten. Beim Check in sPlan unter Settings --> General Settings --> Display sollte das Beweisbild (s.o.) zu sehen sein, also ein aktiviertes "Use new graphics-engine (Direct 2D)".

Sollte es stattdessen eine Meldung geben wie z. B. "Die neue Grafikengine DIRECT2D wird von Ihrem System nicht unterstützt! <OK>" läuft D2D nicht. Nach dem ersten erfolgreichen Starten von sPlan und beenden, wird die SPLAN80.INI geschrieben. Hier sollte in Zeile 29 (ca.) der Eintrag "UseD2D=1" vorhanden sein.

Es gibt auch lt. wine-Doku andere Methoden, wie man eine andere d2d1.dll ins Wine-Universum installiert, aber mir war dieser Weg der einfachste und es betrifft ja nur eine DLL und eine Anwendung. Eine Alternative wäre noch, das durch eine Umgebungsvariable WINEDLLOVERRIDE (oder so ähnlich) zu erreichen.

Verweise:
https://wiki.winehq.org/Wine_User's_Guide#DLL_Overrides
https://www.buhl.de/tax-software/index. ... und-linux/ - hier hatte jemand ein ähnliches Problem
https://forum.winehq.org/viewtopic.php?t=35318#p133592 - der Verweis auf die original d2d1.dll

Im übrigen ist sPlan Version 8 jetzt auch in der WineHQ Datenbank vorhanden.

Sabu
Beiträge: 11
Registriert: Donnerstag 7. Oktober 2021, 14:05

Re: sPlan 8 und Linux (wine)

Beitrag von Sabu » Freitag 14. Januar 2022, 01:17

Sabu hat geschrieben:
Samstag 8. Januar 2022, 23:35
Ergänzend: Im Umkehrschluss würde das heißen, dass man sPlan 8 bei Monitoren mit hoher Pixeldichte nur mit D2D ans laufen bekommt. Jetzt müsste ich nochmal versuchen, ob sPlan dann auch im 30-bit Modus (3x10 Bit Farbtiefe) läuft.
Habe das jetzt mal im 30-Bit Modus versucht, also sPlan 8 mit aktiven Direct 2D, >140 dpi (Pixeldichte) und 10 Bit Farbtiefe je Farbkanal. Das Ergebnis ist, das es nicht läuft und eine Fehlermeldung gibt:
"Zugriffsverletzung an Adresse FFFF0000. Lesen von Adresse FFFF0000. <OK>"
Danach muss man sPlan killen = über den Prozessmanager beenden ($> kill <pid von sPlan80.exe>).

Getestet mit dem Update vom 13.1.2022.

Antworten

Zurück zu „Thema: Installation, Versionen, Updates, Plattformen“