Entwickler-Ecke
Dateizugriff - Startordner eine Verknüpfung ermittlen
Daniel L. - Mi 03.07.13 17:18
Titel: Startordner eine Verknüpfung ermittlen
Hallo,
Meine Anwendung wird vom User durch eine Verknüpfung gestartet, die sich in irgendeinem anderen Ordner befindet.
Kann die Anwendung diesen Ordner ermittlen?
Danke und Gruss: Daniel
jaenicke - Mi 03.07.13 19:42
Diese Information ist nicht abrufbar, nein.
GuaAck - Mi 03.07.13 19:54
Man könnte den aktuellen Pfad als Parameter in der Verknüpfung eintragen. Das könnte die Anwendung über Paramcount, Paramstr dann abfragen. Hängt von der Erstellung der Verknüpfung ab, ab das praktikabel ist.
Gruß GuaAck
Palladin007 - Do 04.07.13 13:14
Oder schreibe doch die schlussendlich zu startende Anwendungs-Datei so um, dass sie automatisch den Installations-Pfad sucht und dann auch dort benötigte Dateien abruft.
So kann diese Anwendungsdatei dann von überall gestartet werden, solange die Anwendung woanders zu finden ist.
Und wenn sie nicht gefunden wird, fragst du den Nutzer nach dem Installationspfad und speicherst den dann in einer kleinen Datei unter appdata.
jaenicke - Do 04.07.13 13:50
Palladin007 hat folgendes geschrieben : |
Oder schreibe doch die schlussendlich zu startende Anwendungs-Datei so um, dass sie automatisch den Installations-Pfad sucht und dann auch dort benötigte Dateien abruft. |
ParamStr(0) enthält den Dateinamen der .exe, aber hier gehts ja um die umgekehrte Richtung.
Palladin007 hat folgendes geschrieben : |
So kann diese Anwendungsdatei dann von überall gestartet werden, solange die Anwendung woanders zu finden ist. |
Solange der aktuelle Ordner dann ein anderer ist, kann man den mit GetCurrentDir herausfinden. Das ist normalerweise aber der der Anwendung selbst, nicht der der Verknüpfung.
Palladin007 hat folgendes geschrieben : |
Und wenn sie nicht gefunden wird, fragst du den Nutzer nach dem Installationspfad und speicherst den dann in einer kleinen Datei unter appdata. |
Dafür gibts normalerweise ja ein Setup und die meisten speichern den Pfad ohnehin in der Registry.
Palladin007 - Do 04.07.13 15:48
Oder anders ausgedrückt: Schreib einen Launcher, dann musst du nicht voraus setzen, dass die automatisch generierte Verknüpfung verwendet, oder eine neue korrekt erstellt wird.
Und Installationen mag ich nicht, die würde ich lieber umgehen. Der Programm-Ordner wird dann schlicht entpackt und der Inhalt durch den Launcher verwendet.
Auch die Registry mag ich nicht, braucht man für die nicht Administratoren-Rechte? Ich würde eine Anwendung lieber ohne Administratoren-Rechte zur Verfügung stellen können.
baumina - Do 04.07.13 15:56
Palladin007 hat folgendes geschrieben : |
Auch die Registry mag ich nicht, braucht man für die nicht Administratoren-Rechte? Ich würde eine Anwendung lieber ohne Administratoren-Rechte zur Verfügung stellen können. |
Für eine Installation benötigt man immer Admin-Rechte, dann kann man auch in die Registry schreiben. Lesen darf man immer.
Palladin007 hat folgendes geschrieben : |
Oder anders ausgedrückt: Schreib einen Launcher, dann musst du nicht voraus setzen, dass die automatisch generierte Verknüpfung verwendet, oder eine neue korrekt erstellt wird. |
Die Frage war ja nicht, dass es sich um eine automatisch erzeugte Verknüpfung handelt, sondern einfach nur eine Verknüpfung. Die kann jeder überall erzeugen, wie er lustig ist.
jaenicke - Do 04.07.13 15:57
Palladin007 hat folgendes geschrieben : |
Auch die Registry mag ich nicht, braucht man für die nicht Administratoren-Rechte? Ich würde eine Anwendung lieber ohne Administratoren-Rechte zur Verfügung stellen können. |
Für normale Einstellungen ist die Registry der richtige Ort. Nur um in der Registry für alle User zu schreiben braucht man Adminrechte, für den aktuellen User reichen auch dessen Rechte.
Palladin007 hat folgendes geschrieben : |
Oder anders ausgedrückt: Schreib einen Launcher, dann musst du nicht voraus setzen, dass die automatisch generierte Verknüpfung verwendet, oder eine neue korrekt erstellt wird. |
Wofür das ganze dienen soll, können wir ja nicht wissen, aber mit einem Launcher löst sich das Problem wohl kaum.
Palladin007 hat folgendes geschrieben : |
Und Installationen mag ich nicht, die würde ich lieber umgehen. |
Nur weil du sie nicht magst, ändert das nichts daran, dass das nun einmal das Standardvorgehen für die Installation von Software ist, wenn man das System sauber halten will. Nur ein Installer kann (und sollte normalerweise) wissen was alles bei einer Deinstallation mit deinstalliert werden muss.
Palladin007 - Do 04.07.13 17:09
Zitat: |
Wofür das ganze dienen soll, können wir ja nicht wissen, aber mit einem Launcher löst sich das Problem wohl kaum. |
Warum nicht? Dieser Launcher enthält entweder das ganze Programm und sucht die benötigten Dateien aus dem Installations-Ordner zurecht und kann die Informationen des aktuellen Ortes, von wo der Launcher gestartet wurde, gleich mit verarbeiten.
Dass man die Position einer Verknüpfung nicht abfragen kann ist eine Tatsache und man kann nicht voraus setzen, dass ein Nutzer immer die automatisch generierte Verknüpfung mit dem Pfad als Parameter verwendet, oder weitere Verknüpfungen korrekt erstellt. Es muss also eine Lösung her und warum sollte ein Nutzer eine Verknüpfung verwenden, wenn er die exe-Datei sowieso von überall, wo es ihm passt, verwenden kann?
Dann braucht er keine Verknüpfung mehr, der Launcher sendet aber zuverlässig alle benötigten Daten an das Hauptprogramm weiter.
Zitat: |
Nur weil du sie nicht magst, ändert das nichts daran, dass das nun einmal das Standardvorgehen für die Installation von Software ist, wenn man das System sauber halten will. Nur ein Installer kann (und sollte normalerweise) wissen was alles bei einer Deinstallation mit deinstalliert werden muss. |
Deinstalliert werden kann es auch so.
Der muss nur wissen, wo alle Dateien liegen, kann sie von dort löschen und dann den Pfad, wo der Programm-Pfad hinterlegt ist, ebenfalls löschen. Dazu braucht es gar nicht erst eine Installation.
Weshalb ich Installationen nicht mag ist ganz einfach: Ich weiß nicht, was dabei geschieht.
Und genau deshalb möchte ich das Anderen ersparen. Die Nutzer sollen das Programm nur simpel mit WinRar oder irgendwas Anderem entpacken und gleich verwenden können. Meiner Meinung nach sollte so wenig wie nur irgendwie möglich außerhalb des Programm-Ordners gespeichert werden, so bietet sich dann auch die Möglichkeit, das Programm portabel zu verwenden.
Baut man noch mit ein, dass der Programm-Ordner im aktuellen Pfad gesucht wird, oder der Pfad in einer Datei unter Appdata, dann kann auch einfach der Ordner neben der exe auf einen Stick kopiert und normal weiter verwendet werden.
PS: Admin-Rechte würde ich meiner Meinung nach nur dann fordern, wenn ich sie auch für die Funktion des Programms benötige.
jaenicke - Do 04.07.13 18:18
Palladin007 hat folgendes geschrieben : |
warum sollte ein Nutzer eine Verknüpfung verwenden, wenn er die exe-Datei sowieso von überall, wo es ihm passt, verwenden kann? |
Ich benutze eine Verknüpfung, damit ich die Anwendung an dem Ort starten kann wo sie liegt ohne eine .exe an diese Stelle zu kopieren. Das ist ja auch der Sinn einer Verknüpfung.
Palladin007 hat folgendes geschrieben : |
PS: Admin-Rechte würde ich meiner Meinung nach nur dann fordern, wenn ich sie auch für die Funktion des Programms benötige. |
Da du ja offenbar Daten im eigenen Verzeichnis speichern möchtest, musst du sie aber ggf. immer anfordern, damit du das kannst. Nicht dass das sinnvoll wäre, es ist aber eine Konsequenz davon...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!