Hallo allerseits,
Vorab: Ich weiß, das ist ein heikles Thema und im Prinzip auch nicht wünschenswert, da es ja nun nicht zu viel von Herstellern einer Software verlangt wäre, plattformunabhängig zu proggen 🙄
Nun ist die Welt aber eine andere und ich möchte ein deb-Paket für ein Windows-Programm, welches soweit einwandfrei unter wine läuft, erstellen. Bisher habe ich hierfür Live-Distris mittels UCK zusammengestrickt, wo /etc/skel bereits alles zur Anwendung enthielt (inklusive zwei winetricks) was notwendig ist. Dazu habe ich dann ein zentrales startscript abgelegt, so dass jeder User das Programm/Die Programmgruppe über das Gnome Menü starten kann. (Für den interessierten: http://forum.ubuntuusers.de/topic/global-gueltige-wine-verknuefungen-im-gnome-m/#post-2424924 )
Das Entdecken und verbessern kleinerer Fehler ist wie ihr euch sicher vorstellen könnt sehr Zeitaufwendig und kann wiederum zu neuen Fehlern und neuen Builds führen etc. Lieber würde ich ein Deb-Paket bauen, welches die wine-Anwendung "zentral" zugänglich macht.
Darauf gebracht hat mich die Meldung der Linux-Teamviewer-Version, welche ja bekanntermaßen eine für wine modifizierte Version des Windowsprogramms ist.
Folglich hat mich natürlich brennend interessiert, wie die Mädels und Jungs bei TeamViewer das realisiert haben. Also habe ich mir das DEB-Paket des Teamviewers geschnappt, entpackt und näher angeschaut und folgendes tritt für mich zu Tage:
Die gesamte Programm/Wrapper-Funktionalität liegt im Ordner opt/teamviewer/teamviewer/5
Im Ordner usr/bin wird ein symlink angelegt, welcher auf das startscript teamviewer in opt/teamviewer/teamviewer/5/bin/ zeigt
Dieses Script legt das Binärverzeichnis für teamviewer fest und startet seinerseits das script wrapper im selben Verzeichnis
wrapper ist das Script welches die zentrale Ausführung der unter opt liegenden wine-Installation ermöglicht. Es enthält eine Bash-Funktion, welche die nötige Verzeichnis-Strukturen beim aktuellen Nutzerverzeichnis anlegt, denn das Paket installiert nicht die wine-Version aus den Quellen als Paketabhängigkeit, sondern liefert eine eigene Version von wine unter opt/teamviewer/teamviewer/5/wine mit.
Natürlich gibt es auch preinst-Scripte, die ich mir allerdings auf die Schnelle nicht angeschaut habe.
Eigentlich eine ganz clevere Herangehensweise. Wenn das Paket schon nicht nativ vorliegt, so wird durch die mitgelieferte wine version sichergestellt, dass das Win-Prog auch ohne eine vorherige wine-installation läuft bzw. nicht durch unvorhersehbare updates nicht mehr funktioniert.
Nun zurück zu meinem Thema: Gerne würde ich das genauso handhaben, wie teamviewer das gelöst hat, bin mir aber noch nicht ganz im klaren wie ich das am besten anstellen soll. Meine Fragen:
Als Basis habe ich die wine-Struktur Meiner angepassten Distri, kann ich diese im prinzip übernehmen bzw. worauf sollte ich dabei achten?
Wäre es zum Beispiel ratsam durch ein AppArmor Profil zusätzliche Barrieren einzubauen, da es sich ja dann um ein win-Programm handelt welches plötzlich außerhalb des vorgesehenen Benutzerverzeichnisses agiert?
Teamviewer hat ein seperates Kill-Script, wofür ist mir aber noch ein wenig schleierhaft (opt/teamviewer/teamviewer/5/bin/killteamviewer)
Und zuguterletzt: Wie seht ihr diese Möglichkeit für wine-Programme?
Wenn nichts dagegen spricht, würde ich aus der Herangehensweise Teamviewer am liebsten ein kleines Guide herausbekommen, wie man es schaffen kann wine-Programme zentral verfügbar zu machen.
Vielen Dank für euer Interesse ☺