Script in Autostart ziehen

Code-Stücke können hier veröffentlicht werden.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Leonidas hat geschrieben: Es ist generell ein schlechtes vorgehen, daher ist es egal wer es aufruft. Und auch bei Autostart-Verknüpfungen kann der Benutzer auswählen, was das Arbeitsverzeichnis sein sollte.
Aber nicht, wenn man es in der Registry macht...
(HKLM\Software\Microsoft\Windows\CurrentVersion\Run)
Darum gehts mir ja grade! Wie kann ich da das Arbeitsverzeichnis festlegen (ohne die Lösung mit dem Batchfile oder dem Programm selber)?
INFACT hat geschrieben: Das mit der Registy finde ich nicht so gut, weil ich glaube, dass das programm sich selbst da rein kopiert [hab das mit os.getcwd() herausgefunden] (weiß aber nicht ob das richtig ist) und wenn man dll's braucht, dann funktioniert das Programm nicht. Wenn das nicht richtig ist, bitte korrigiert mich Wink
Nein, das Programm kopiert sich nirgendwo rein. Es wird nur in einem anderen Verzeichnis ausgeführt (C:\Dokumente und Einstellungen\%USERNAME%). Darum geht es auch in dieser Diskussion mit Leonidas gerade.
Um das zu umgehen, kann man ein Batch-File erstellen, das das richtige Working Dir setzt und dann das Programm startet (s. mein letzter Post).
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ice2k3 hat geschrieben:Aber nicht, wenn man es in der Registry macht...
Wozu ich generell nicht raten kann, weil das einfach Userfeindlich ist und dort hauptsächlich irgendeine Software die man nicht haben will sich einträgt ohne dass der Otto-Normal-User es einfach so, gefahrlos rauslöschen kann. Da ist die Verknüpfung im Autostart besser. Und Verknüpfungen würde ich auch nicht in HKLM sondern wenn schon dann in HKCU anlegen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Ok, über den Schlüssel "Common Startup" unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" komme ich ja an das Verzeichnis.
Die Batch-Datei (wie oben im Code) leg ich dann einfach in diesem Verzeichnis an.
Ist das dann ein gutes Vorgehen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Besser nur in den Startup eines Users, nicht in den von allen. Die anderen User wollen es ja vermutlich nicht im Autostart haben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Doch, für dieses Programm schon. Ist mein Datenbank-Server (s. Thread unter Datenbankprogrammierung).

Weiß vielleicht jemand, ob oben genannte Vorgehensweise auch unter den Windows Server Versionen funktioniert?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Datenbank-Server würde ich nicht in den Autostart schreiben sondern als Windows Service implementieren, analog zu Daemons unter Unices. Dann muss sich auch kein User anmelden, sondern dass System kann ganz ohne angemeldete User funktionieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben:Datenbank-Server würde ich nicht in den Autostart schreiben sondern als Windows Service implementieren, analog zu Daemons unter Unices. Dann muss sich auch kein User anmelden, sondern dass System kann ganz ohne angemeldete User funktionieren.
Das musste mal den Leuten von Siemens erzählen ... deren PDM-System bringt dazu mal nichts von Haus aus mit ;-)

Und für so etwas zahlen die Firmen für die Lizenz alleine Euros im 6-7 stelligen Bereich ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:Das musste mal den Leuten von Siemens erzählen ... deren PDM-System bringt dazu mal nichts von Haus aus mit ;-)
Ist ja auch nicht Freie Software; in dem Bereich kann Freie Software durchaus punkten :D Und wir wissen ja alle das sie viel besser ist als propietäres Zeug ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Leonidas hat geschrieben:Datenbank-Server würde ich nicht in den Autostart schreiben sondern als Windows Service implementieren, analog zu Daemons unter Unices. Dann muss sich auch kein User anmelden, sondern dass System kann ganz ohne angemeldete User funktionieren.
Ja, das habe ich mir auch schon überlegt, aber ich möchte mein Programm möglichst für beide Plattformen identisch haben.
Oder gibt es da einen einfachen Ansatz, um einen Dienst/Daemon zu erstellen, der unter beiden Plattformen läuft.
Oder kann unter Linux das Skript auch ohne Anpassung als Daemon gestartet werden?
Dann bräuchte ich ja nur noch einen Part für Windows, der den Rest vom Programm importiert und als Service bereitstellt.
Oder wie soll ich da vorgehen?
lunar

Das Starten von Diensten ist unter Windows und Linux unterschiedlich. Unter Windows kenne ich mich nicht aus, aber unter Linux musst du korrekt forken und Signal-Handler implementieren, was es unter Windows nicht gibt.

Aber der Startcode sollte doch wirklich trivial zu schreiben sein, wenn die Logik des Dienstes entsprechend als Modul zur Verfügung steht.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Wollte gerade mein Programm (entwickelt unter Win für Python 2.6) unter Ubuntu testen und habe gemerkt, dass es für Ubuntu noch gar keine 2.6 Version im Paketmanager gibt.
Mein 2.6 Programm musste an ein paar Stellen angepasst werden (z.B. with_statement importieren).

Sieht das bei anderen Distris ähnlich aus? Wenn ja, will ich das Programm vielleicht doch nicht Linux kompatibel machen...
lunar

Keine stabile Distribution liefert Python 2.6 zum gegenwärtigen Zeitpunkt aus. Selbst bei Gentoo ist Python 2.6 maskiert.

Bei Enterprise-Distributionen von Novell oder Red Hat musst du unter Umständen noch mit Python 2.4, wenn nicht in Extremfällen sogar mit Python 2.3 rechnen. Und je nach Zielgruppe deines Programms sind auch professionelle Windows-Admins skeptisch, wenn ein Programm sie zwingt, eine neuere Version eines bestimmten Interpreters zu installieren.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

lunar hat geschrieben:Und je nach Zielgruppe deines Programms sind auch professionelle Windows-Admins skeptisch, wenn ein Programm sie zwingt, eine neuere Version eines bestimmten Interpreters zu installieren.
Dazu hab ich py2exe!
Oder funktioniert das mit py2exe nicht, wenn ich mit den Extensions ein Service aus meinem Programm mache?
lunar

Ein Windows-Dienst muss soweit ich weiß bestimmte Eintrittsfunktionen exportieren, was py2exe wohl eher nicht kann.

Und ob py2exe nun eine gute Idee ist für einen Server-Dienst, welchen ein skeptischer Admin installieren soll, darf bezweifelt werden ...
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

lunar hat geschrieben:Ein Windows-Dienst muss soweit ich weiß bestimmte Eintrittsfunktionen exportieren, was py2exe wohl eher nicht kann.
Um diese Funktionen in ein Python-Programm zu intergrieren gibt es ja entsprechende Module in den "Python Extensions for Windows". Nun die Frage, ob das mit py2exe funktioniert. Vielleicht mal noch eine andere Meinung, scheinbar kennst du dich da weniger aus als ich ;)
lunar hat geschrieben:Und ob py2exe nun eine gute Idee ist für einen Server-Dienst, welchen ein skeptischer Admin installieren soll, darf bezweifelt werden ...
Warum?
Was soll ich deiner Meinung sonst machen?
lunar

ice2k3 hat geschrieben:
lunar hat geschrieben:Ein Windows-Dienst muss soweit ich weiß bestimmte Eintrittsfunktionen exportieren, was py2exe wohl eher nicht kann.
Um diese Funktionen in ein Python-Programm zu intergrieren gibt es ja entsprechende Module in den "Python Extensions for Windows".
Das weiß ich.
Nun die Frage, ob das mit py2exe funktioniert.
Das wiederum weiß ich nicht, ich nutze py2exe und auch dessen Alternative pyinstaller nicht.
lunar hat geschrieben:Und ob py2exe nun eine gute Idee ist für einen Server-Dienst, welchen ein skeptischer Admin installieren soll, darf bezweifelt werden ...
Warum?
Sicherheit. Wenn ein Admin ein py2exe-Programm installiert, muss er darauf vertrauen, dass du auf Sicherheitslücken im Python-Kern selbst reagierst (da er das Programm ja nicht neu packen kann). Bei einem separat installierten Programm dagegen hat der Admin die Kontrolle über die installierte Python-Version, und Admins stehen generell auf Kontrolle ;)
Was soll ich deiner Meinung sonst machen?
Ich würde py2exe nicht nutzen und lieber eine detaillierte Installationsanleitung schreiben, die alle Abhängigkeiten und deren Installationsprozedur erklärt.

Das ist nur meine persönliche Meinung, die aber natürlich auf deine Situation nicht zutreffen muss. Ignoriere das also einfach, wenn es dir nicht passt ;)
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Das Programm soll eben zum einen in größeren Unternehmen mit Server eingesetzt werden, zum anderen aber auch in kleinen Betrieben, die nicht einmal einen Server zur Verfügung haben. (Mein DB-Server muss halt dann auf einem normalen Büro-PC installiert werden).
Deshalb sollte eben eine relativ einfache Installationsart möglich sein.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Python Interpreter einfach so beipacken?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Oder mit NSIS bzw. InnoSetup ein Installer schreiben, der alle nötigen Installer nacheinander ausführt und eine bereits installierte Python-Version selbstständig erkennt ... so schwer ist das auch nicht.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gerold hatte iirc mal einen minimalen Dienst hier gepostet. Mit dieser Vorlage habe selbst ich es geschafft einen Dienst unter Win zu programmieren. War eigentlich gar nicht so schwer.
Antworten