Seite 2 von 4

Verfasst: Mittwoch 11. März 2009, 11:29
von Leonidas
ice2k3 hat geschrieben:Braucht man für den Linux-Teil spezielle Voraussetzungen?
Nein, da ist schon alles nötige implementiert.

Verfasst: Mittwoch 11. März 2009, 11:53
von ms4py
Die Dateien im Autostart werden immer im Ordner C:\Dokumente und Einstellungen\%USER% ausgeführt.
Gibt es einen Trick um das zu verhindern?

Oder muss ich dann manuell in meinem Programm das cwd ändern?

Verfasst: Mittwoch 11. März 2009, 16:34
von veers
Keine Ahnung. Aber meiner Meinung nach sollte ein Programm nicht von der CWD abhängig sein. :wink:

Verfasst: Mittwoch 11. März 2009, 17:13
von ms4py
Wie soll man es sonst machen mit Ressourcen wie Bildern etc.??

Verfasst: Mittwoch 11. März 2009, 17:19
von lunar
ice2k3 hat geschrieben:Wie soll man es sonst machen mit Ressourcen wie Bildern etc.??
Als Paketdaten mitliefern. Entweder mit setuptools und pkg_resources, oder manuell über distutils und __file__ auf Paketebene.

Re: Script in Autostart ziehen

Verfasst: Mittwoch 11. März 2009, 20:22
von INFACT
DasIch hat geschrieben:
INFACT hat geschrieben:Ausserdem gibt es glaube ich nur auf Windows eine Autostart :wink:
Falsch geglaubt.
Okey dann nicht :?
aber mann kann ja nach "Autostart" suchen und dann in jedes ergebnis einmal einen Link ziehen

Verfasst: Mittwoch 11. März 2009, 21:01
von INFACT
@veers:

Code: Alles auswählen

def add(name, application)
ich weiß nicht ob ich das richtig verstehe, => name ist der name, wie z.B. "namederdatei.test" und application ist der Pfad und name der Datei (oder ist das ein link), die darein gezogen wird? :?: :(

Danke!

MfG Robin

Re: Script in Autostart ziehen

Verfasst: Donnerstag 12. März 2009, 03:04
von gkuhl
INFACT hat geschrieben:...nach "Autostart" suchen und dann...
"Autostart" ist uebrigens Deutsch!

Verfasst: Donnerstag 12. März 2009, 08:22
von ms4py
lunar hat geschrieben:
ice2k3 hat geschrieben:Wie soll man es sonst machen mit Ressourcen wie Bildern etc.??
Als Paketdaten mitliefern. Entweder mit setuptools und pkg_resources, oder manuell über distutils und __file__ auf Paketebene.
Und wenn ich das Programm mit py2exe für Windows kompilier?

Verfasst: Donnerstag 12. März 2009, 14:55
von cofi
Dann kommst du an den Dateinamen mit sys.argv[0] ran.

Verfasst: Donnerstag 12. März 2009, 15:24
von ms4py
Und dann mach ich:

Code: Alles auswählen

import sys, os
filename = "script.py"
folder = sys.argv[0].rstrip(filename)
os.chdir(folder)
Und das soll dann ein gute Lösung sein?! Ist für mich ein Notfall-Hack, aber keine schöne Lösung meiner Meinung nach.

Verfasst: Donnerstag 12. März 2009, 15:54
von cofi

Code: Alles auswählen

import os, sys
folder = os.path.dirname(os.path.abspath(sys.argv[0]))
Ist mir ehrlich gesagt weit lieber ;)

Verfasst: Donnerstag 12. März 2009, 17:21
von Leonidas
ice2k3 hat geschrieben:Und das soll dann ein gute Lösung sein?!
Ne, aber von so einer Lösung hat auch niemand gesprochen. Keine Ahnung wie du nun auf sowas kommst.

Verfasst: Donnerstag 12. März 2009, 20:20
von ms4py
Das war ja nur auf die Schnelle.
Ich meinte das halt allgemein. Ist das so gängig, aus sys.argv den Ordner zu lesen und diesen dann als "Working-Dir" zu setzen?

Verfasst: Donnerstag 12. März 2009, 20:26
von cofi
Du musst ja nicht unbedingt das working Directory wechseln, sondern kannst per `os.path.join(folder, fname)' dann an die eigentlichen Dateien kommen.
Wenn du keine GUI-Applikation hast, solltest du den Verzeichniswechsel unterlassen, denn der Benutzer hat das Programm ja eventuell aus einem guten Grund aus dem Verzeichnis gestartet.

Verfasst: Donnerstag 12. März 2009, 21:09
von ms4py
a) Ja, es ist eine GUI-App
und
b) Nicht der Benutzer ruft es aus einem anderen Verzeichnis auf, sondern der Windows-Autostart ;)

Verfasst: Freitag 13. März 2009, 09:51
von Leonidas
ice2k3 hat geschrieben:Ist das so gängig, aus sys.argv den Ordner zu lesen und diesen dann als "Working-Dir" zu setzen?
Nein. Es ist eigentlich nie gängig, dass das Programm sein Working Directory einfach so ändert. Der User hat das Programm in einem bestimmten Ordner gestartet und damit höcstwarscheinlich irgendetwas damit bezweckt, daher wäre es schlecht wenn das Programm eigenwillig entscheidet dass es doch lieber ein anderes Working Directory hätte.

Verfasst: Freitag 13. März 2009, 10:00
von ms4py
ice2k3 hat geschrieben: b) Nicht der Benutzer ruft es aus einem anderen Verzeichnis auf, sondern der Windows-Autostart ;)
Ganz ehrlich, wie oft muss ich das denn noch sagen?!

Das wäre mal meine Alternative (Hoffe mal, dass klar ist, was ich da mache^^)

Code: Alles auswählen

import os
import sys

def register(folder):
	start_file = "%s/start.bat" % folder
	with open(start_file, "w") as f:
		f.write("@echo off\n")
		f.write("cd "%s"\n" % folder)
		f.write("start /B dbremote.exe")
	# Dann kommt Registry Eintrag auf Batch File
			
if __name__ == "__main__":
	register(os.getcwd())

Verfasst: Freitag 13. März 2009, 10:29
von Leonidas
ice2k3 hat geschrieben:
ice2k3 hat geschrieben: b) Nicht der Benutzer ruft es aus einem anderen Verzeichnis auf, sondern der Windows-Autostart ;)
Ganz ehrlich, wie oft muss ich das denn noch sagen?!
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.

Verfasst: Freitag 13. März 2009, 16:42
von INFACT
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:

Ich weiß nicht ob das richtig ist, aber ich glaube es.
Kann man irgendeinen Link in die Reg machen? -sorry ich kenne mich damit nicht so aus-
Danke
Robin :wink: