Forum: PC-Programmierung Wine Applikation unter Ubuntu automatisch starten


von sven (Gast)


Lesenswert?

Hi,

es ist das erste Mal, das ich einen Ubuntu-Server nutze. Ich habe wine 
installiert und eine Windows Applikation damit laufen lassen. Nun möchte 
ich, dass diese Applikation auch nach einem Serverneustart automatisch 
startet, d.h. der Server soll sich automatisch hochfahren und das 
Programm starten, ohne das wer eingreifen muss.

Wie kann ich das am einfachsten machen?

von Jay W. (jayway)


Lesenswert?


von sven (Gast)


Lesenswert?

Hi, habe ich mir angesehen. Vielen Dank.

Doch der Autostart ist ja dafür da, dass nach dem Anmelden der 
graphischen Oberfläche die dort eingetragenen Programme starten.

Ich nutze Ubuntu Server. Nach einem Ausfall wird der Server zwar 
neugestartet, doch ist nicht zwangsweise der da, der sich auch an der 
graphischen Oberfläche anmeldet, um so den Autostart zu aktivieren.

Und unter wine habe ich die Applikation schon zum Laufen gebracht, 
dennoch startet diese nicht automatisch...

von Flip (Gast)


Lesenswert?

dafür ist die rc.local da, http://wiki.ubuntuusers.de/rc.local

von Joschua C. (Gast)


Lesenswert?

man init
Ist ein Dämon, der erste aufgerufene Prozess beim Start. Hat 
verschiedene Runlevels (Start, Neustart, Herunterfahren, ...) in denen 
du selbsgeschriebene Shell-Skripte ablaufen lassen kannst.

von kopfkratzer (Gast)


Lesenswert?

kopfkratz
Tja nun dann packe einfach in init.d den wine Aufruf hinein.
Z.B.:
1
wine /home/user/.wine/drive_c/windows/superapp.exe
Könnte man auch in die init von X11 packen.
Wenn man ja wüßte wo das eigentliche Problem liegt ...

von sven (Gast)


Lesenswert?

Danke für die Antworten!

Wie funktioniert das eigentlich mit der Oberfläche des Programms. Wenn 
ich die Exe in die init.d lege und dann mit am Server anmelde, ist dann 
das Programm da schon offen?

Wird diese init.d von "Root" aufgerufen, d.h. ist dann mein System 
irgendwie unsicher?!

von sven (Gast)


Lesenswert?

Ich benötige für meine Applikation (exe) das gestartete Wine Programm, 
eine Internetverbindung und meine Applikation besitzt eine graphische 
Oberfläche.

Der Aufruf lautet, soweit ich es überblicke:
1
 wine /root/.wine/drive_c/Program\ Files\ (x86)/Programmname.exe

1.Wann wird die rc.local ausgeführt? Zu Beginn oder Ende des 
Init-Vorgangs? Evtl. muss ich ja noch was anderes davor starten oder 
meinen Befehl in ein anderes File aus dem init.d - Ordner schreiben?
(Ich habe gelesen, dass ein X-Server für die optische Oberfläch 
verantwortlich ist. Wann wird dieser gestartet?

2.Wäre es eine Möglichkeit, einen Benutzer ohne Passwort (aber mit 
eingeschränkten Rechten anzulegen) und diesem die Exe in die Autostart 
zu legen? (der normale Autostart funktioniert mit der Applikation 
einwandfrei)

von sven (Gast)


Lesenswert?

Hi,

gibt es die Möglichkeit, die GUI im Hintergrund vor dem Init zu starten?
Wie würde das gehen?
Bin aktuell etwas ratlos...

von c.m. (Gast)


Lesenswert?

sven schrieb:
> Hi,
>
> gibt es die Möglichkeit, die GUI im Hintergrund vor dem Init zu starten?
> Wie würde das gehen?
> Bin aktuell etwas ratlos...

ein windowsprogramm auf einem linuxrechner - uiiii das muss aber eine 
supertollanwendung sein… brech

sei's drum.
ICH würde die anwendung in einer VM, z.b. virtualbox, laufen lassen 
"headless" ist da das stichwort.
wenn du unbedingt auf wine bestehst, und das ganze beim systemstart ohne 
vorhandene grafische oberfläche gestartet werden soll, kannst du z.b. 
einen vncserver in ein init-script packen. der startet dann eine 
grafische oberfläche im speicher, also ohne sie auf der grafikkarte 
anzuzeigen, und dort kannst su deine anwendung in den autostart der 
jeweiligen gui packen.

ich halte das jedoch für stümperei - die vm ist die weitaus bessere 
vorgehensweise.

von sven (Gast)


Lesenswert?

Also als VirtualBox ist es uns bei unserem Anbieter nicht erlaubt.

Es handelt sich um eine Vorgabe, dass wir Ubuntu nehmen sollen und auch 
dass diese Windows Applikation möglichst endlos laufen soll (auch wenn 
es nicht optimal ist).

Mein Lösungsweg (dachte ich zumindest) ist folgender
1.Neuen Benutzer mit Autologin anlegen
2.Unter diesem Benutzer Wine und die Windows Applikation installieren
3.Die Windows Applikation in die Startup-Applikation legen

Nun passiert folgendes nach einem Reboot:
Erst wenn ich mich mit NX Client als Benutzer einlogge startet der 
Server und somit auch die Windows Applikation automatisch.
Aber leider nicht direkt nach dem Reboot (also ohne einloggen)

Besteht hier meinerseits noch ein Denkfehler? Kann es sein, dass es 
läuft und ich erhalte nur mit dem NX-Client eine neue Desktopansicht und 
schalte mich nicht auf das existierende Programm?
Wie kann ich den Startup-Vorgang debuggen?

von c.m. (Gast)


Lesenswert?

da du dich für nomachine nx entschieden hast, wirst du dich wohl in 
die benutzung des programms einlesen müssen. klingt grausam, ist aber 
so.

von sven (Gast)


Lesenswert?

Hallo,

nun muss ich doch nochmal auf dieses Thema zurückkommen, da ich 
zwischenzeitlich ein anderes großes Projekt hatte, und...

So, fakt ist ich habe einen Ubuntu Server mit Wine und einer 
installierten Windows app., auf den Server komme ich mit X2Go.

Nun habe ich nach folgenden Anleitungen das Autologin und den Start der 
Wine-exe erstellt:
http://www.backtrack-linux.org/forums/showthread.php?t=28062
http://ubuntuforums.org/showthread.php?t=870877

Leider funktioniert es nicht und ich kann nicht sagen, was überhaupt 
durchgeführt wird, oder nicht.

Ich habe nun das auth.log File angesehen, aber heißt es während der 
Autostartzeit ständig

pam_unix(login:session): session opened for user testserver by 
testserver(uid=0)
pam_unix(login:session): session closed for user testserver
pam_unix(login:session): session opened for user testserver by 
testserver(uid=0)
usw.

Woran kann dies liegen?

von c.m. (Gast)


Lesenswert?

weiß wine denn auf welchem $DISPLAY die anwendung dargestellt werden 
soll?

von sven (Gast)


Lesenswert?

Weiß nicht genau, ich habe folgendes eingestellt:

Ich habe es wie folgt gemacht:
In der tt1.conf habe ich die letzte Zeile so ersetzt
1
exec /bin/login -f testuser < /dev/tty1 > /dev/tty1 2>&1

Zudem habe ich ein  ~/.bashrc File erstellt:
1
if [ $(tty) == "/dev/tty1" ]; then
2
sudo start-network
3
sudo startx
4
sudo wicd-client
5
wine /home/testuser/.wine/drive_c/Program Files (x86)/application.exe
6
fi

von c.m. (Gast)


Lesenswert?

du vermischst ein x das root gehört mit x-programmen die unter 
'testuser' ausgeführt werden ohne das sie wissen an welches display sie 
sich verbinden sollen.
daszu kommt das unter dem root-x wahrscheinlich kein 'xhost +' gesetzt 
ist so das andere user sich nicht daran verbinden dürfen - und und und.
die .bashrc ist außerdem ein ganz schlechter ort um sowas auszuführen. 
die wird jedesmal gesourced wenn eine interaktive bash unter dem 
jeweiligen user ausgeführt wird.

WARUM nicht einfach ein grafisches autologin als 'testuser' und ein 
shellscript im autostart-ordner?

von Zugh (Gast)


Lesenswert?

Xvnc oder ähnlich mit eigenen $DISPLAY via Startscript in /etc/init.d 
starten und die Anwendung darin via ~/.xsession sarten.

von sven (Gast)


Lesenswert?

Ich bin eigentlich erst so vorgegangen:

1. Windows Programm in den Autostart des Benutzers
> nach einem Login per X2Go wurde das Programm wie gewünscht geöffnet

2. Zudem einen Autologin des Benutzers eingetragen
> das Programm wurde dann aber trotzdem erst gestartet, nachdem ich mich 
eingeloggt habe. Und das obwohl der Autologin "ON" ist.

Warum?

Deshalb habe ich gegoogelt und gelesen, dass die graphische 
Benutzeroberfläche nicht aktiv ist und ich dieses erst durch ein 
Bash-Skript starten muss. Hier habe ich unterschiedliche Namen gefunden 
.bash_profile oder .bashrc und dazu noch unterschiedliche Inhalte
z.B.
1
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
2
   startxfce4
3
fi

Zudem benötigt meine Applikation auch
-Internetverbindung und Wine
Ich weiß nicht, ob ich das auch explizit starten muss?
Woher weiß ich, wie genau die speziellen Startbefehle heißen müssen?!


Ich würde mich sehr freuen, wenn mir hier jemand konkret weiterhelfen 
könnte!!! Außerdem bin ich inzwischen sehr verwirrt, da ich von sovielen 
verschiedenen Wegen und Befehlen gelesen habe (Bash oder Shell-Skript 
usw. oder über Xvnc).
Andere sagen sogar, dass man auf einem VPS-Server gar keine graphische 
Oberfläche installieren soll. Allerdings ist das auch eine Preisfrage, 
da der Ubuntu-Server mit mtl. 3 EUR kostet und der Windows 9 EUR.

von sven (Gast)


Lesenswert?

OK, ich habe einen Fehler in meinem Wine Aufruf gefunden:

So funktioniert der Befehl, wenn ich eingeloggt bin:
1
wine "/home/testuser/.wine/drive_c/Program Files (x86)/application.exe"
,

Nun muss ich nur noch irgendwie den X-Server korrekt starten und sagen, 
wo und wie der die application starten soll?
...so denke ich es mir zumindest.

von c.m. (Gast)


Lesenswert?

ein beispiel wie ich das hier zuhause mache :)

'puck' ist ein laptop, der server. darauf installiert ist ein vnc-server 
und xfce4 als desktop.
script um den vnc-server zu starten (bei dir als 'testuser'). der server 
macht keine ausgabe auf dem bildschirm, d.h. das x-display läuft nur 
im speicher.
1
cm@puck:~$ cat bin/start_tightvncserver.sh 
2
#!/bin/bash
3
tightvncserver -kill :1
4
nohup tightvncserver -localhost -geometry 1280x800 :1 >/dev/null 2>&1 &

der vnc-server führt beim starten die datei ~/.vnc/xstartup aus (~/ des 
'testusers'), darin wird der window-manager gestartet.
1
cm@puck:~$ cat .vnc/xstartup 
2
#!/bin/sh
3
exec ck-launch-session startxfce4

die 'firewall' des servers lässt nur ssh verbindungen zu, also keine 
direkten (unverschlüsselten) verbindungen zum vnc-server. d.h. man muss, 
um sich mit einem vnc-client zum server zu verbinden, zuerst einen 
ssh-tunnel starten, und sich dann über den tunnel verbinden.
script auf clients die sich zum server verbinden wollen (ssh mit 
passwordless login):
1
cm@edevel:~$ cat bin/pucksshvnc.sh 
2
#!/bin/bash
3
ssh -p 1028 -c blowfish -NCL 5901:localhost:5901 puck &
4
SSHTUNNEL_PID=$!
5
sleep 1
6
vncviewer -nojpeg -quality 0 -compresslevel 0 localhost:1
7
kill ${SSHTUNNEL_PID}

anpassungen die du machen müsstest:
1. starten des vnc-servers beim systemstart als 'testuser'.
meiner meinung nach am besten in der /etc/rc.local (ungestestet, dein 
problem)
1
su - testuser -c '<script zum vnc-server starten>' >/dev/null 2>&1 &
statt /dev/null kannst du auch erstmal ein logfile angeben.

2. starten deiner windows applikation durch autostart-funktion des 
window managers.

sollte funktionieren, viel glück.

von sven (Gast)


Lesenswert?

...DANKE c.m.

Damit wir uns nicht falsch verstehen! Es geht mir darum, dass sobald 
mein VPS-Server neugestartet wird bzw. nach einem Ausfall neu hochfährt, 
mein Windowsprogramm auch wieder automatisch gestartet wird. Auch OHNE 
das ich mich per x2go anmelde. Aktuell habe ich mein Windowsprogram in 
die Ubuntu "StartUpApplications" gelegt. Das startet zwar automatisch, 
ABER eben erst nach der manuellen Anmeldung mit x2go.

Ich habe also bereits eine SSH Verbindung per X2Go mit eigenem KeyFile 
eingerichtet. Das Private Key File habe ich zusätzlich per Passphrase 
geschützt. Ausserdem habe ich im ssh config file das Login für root 
verboten und auch das login per BN/PW deaktiviert.

Da ich nun also wie gesagt mit X2Go ja bereits meinen Server (auf dem 
ubuntu-desktop ist installiert) sehe, frage ich mich, wozu ich nun noch 
"vnc" brauche???

Könntest du das kurz erklären?
...ich dachte eigentlich das ich nur noch irgendein script erstellen 
muss, wo ich einfach reinschreibe, dass er mir den x-server startet und 
natürlich auch das internet und wine bzw. damit auch mein Windows 
Programm unter Wine.
Und wenn ich mich dann per X2Go anmelde ist quasi alles bereits offen!

von c.m. (Gast)


Lesenswert?

sven schrieb:

> Da ich nun also wie gesagt mit X2Go ja bereits meinen Server (auf dem
> ubuntu-desktop ist installiert) sehe, frage ich mich, wozu ich nun noch
> "vnc" brauche???

brauchst du nicht, der vnc-server war als alternative für x2go gedacht. 
wenn du vnc nicht verwenden kannst/willst, musst du dich mit der x2go 
doku rumschlagen.
ich werd mir das für mich auch mal anschauen, soll wohl schneller sein 
als vnc, und dabei weniger kompliziert als nx. ad hoc dabei weiterhelfen 
kann ich allerdings nicht.

von sven (Gast)


Lesenswert?

X2Go kann ich nur empfehlen. Ich hab auch nx ausprobiert, aber X2Go ist 
bei mir in etwa doppelt so schnell!

Nur noch zum Verständnis, X2Go habe ich, damit ich von zuhause aus auf 
den Server schauen kann, logisch.

ABER mir geht des darum, das der Server (VPS) stand alone, also selbst 
wenn ich mich nicht damit verbinde, nach jedem reboot / start 
automatisch meine Wine-Applikation (.exe) startet. Die Frage ist für 
mich nur wie?
-vmtl. erst mal eine graph. Oberfläche starten also X und den lightdm???
-dann muss ggf. noch das netzwerk (bzw. internet) aktiviert werden
-und dann muss ggf auch noch WINE gestartet werden?
-und natürlich auch noch meine .exe

Wie geht das??? Gibt es ein Script das ich mal testen kann?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.