Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 03.07.13 17:18 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 03.07.13 19:42 
Diese Information ist nicht abrufbar, nein.
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.07.13 13:50 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Do 04.07.13 15:56 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.07.13 15:57 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.07.13 18:18 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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...