AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzeichni
Tutorial durchsuchen
Ansicht
Themen-Optionen

Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzeichni

Ein Tutorial von Luckie · begonnen am 22. Sep 2005 · letzter Beitrag vom 1. Jan 2007
Antwort Antwort
Seite 6 von 9   « Erste     456 78     Letzte »    
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
Es gibt auf meiner Homepage wieder einen neuen Artikel: %HOMEDIR% - das unbekannte Verzeichnis. Da er ein programmierspezifisches Thema behandelt, stelle ich ihn mal hier vor. In dem Artikel geht es um die Unsitte, dass Programmierer leider immer noch ihre Konfiguratiosndaten im Programmverzeichnis abelegen. In der letzten Zeit ist mir das immer wieder bei Programmen aufgefallen, die hier oder in anderen Foren vorgstellt werden. Da ich es leid war immer wieder das gleiche zu schreiben, hab eich mir erlaubt einen Artikel zuschreiben und es dort noch etwas weiter auszuführen.

Link zum Artikel: http://www.michael-puff.de/Developer.../HOMEDIR.shtml

Über Kritik und Anregungen würde ich mich freuen.
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#51
  Alt 23. Sep 2005, 13:50
Was macht ihr das eingentlich immer daran fest, ob es ein große oder kleines Tool ist? Meine LuckieDIPS würde ich auch als eher klein bezeichnen, aber was nütz mir das Programm, wenn ich im Anwendungsverzeichnis keine Schreibrechte habe? Aber auch wenn ich sie hätte, und es mehrere Benutzer auf dem System gibt, dann würden sich die Benutzer ja immer gegenseitig die gesicherten Iconpositionen überschreiben.

Es geht einzig und alleine darum, ob eine Programm von mehreren Benutzer genutzt werden soll oder nicht. Und nicht, ob Schreibrechte vorhanden sind oder nicht.

Dass es auch Außnahmen gibt, habe ich ja schon eingeräumt, zum Beispiel Software, die unteranderem speziell für den USB Stick zum mitrumschleppen konzipiert wurde.
Michael
  Mit Zitat antworten Zitat
MathiasSimmack
 
#52
  Alt 23. Sep 2005, 17:13
Anregung für einen neuen Artikel, Luckie: "Readme-Dateien, unbekannt und doch hilfreich"

Zitat von NicoDE:
(es gibt genug Programme die nicht auf Mehrbenutzersysteme ausgelegt sind - beste Beispiel OpenOffice (und das ist nicht gerade 'klein')).
Wenn du das Openoffice(.org) meinst, das ich kenne, dann musst du das Setup mal mit dem "-net"-Parameter starten, Nico, und du wirst staunen. Edit: ~130MB global installierte Dateien, und nicht ganz 2 MB im Benutzerverzeichnis.
  Mit Zitat antworten Zitat
NicoDE
 
#53
  Alt 23. Sep 2005, 17:35
Zitat von MathiasSimmack:
dann musst du das Setup mal mit dem "-net"-Parameter starten, Nico, und du wirst staunen. Edit: ~130MB global installierte Dateien, und nicht ganz 2 MB im Benutzerverzeichnis.
[ot] Schön wär's, dann wird auf meinem Rechner nur die Hälfte installiert... (1.1.5 und 1.9.125) [ot]
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

 
Delphi 2005 Personal
 
#54
  Alt 27. Sep 2005, 21:53
Zitat von Sharky:
Hai ihr,

um auch mal einen Beitrag zu leisen

Ich mache das ganz einfach so:
Wenn es im Verzeichniss der Exe eine INI für das Programm gibt und in dieser in einem bestimmten Abschnitt ein Pfad zu einem Datenverzeichniss steht wird dieser verwendet. Wenn dieser Eintrag nicht vorhanden (oder leer) ist wird das APPDIR verwendet.
Dadurch hat der Anwender die Möglichkeit zu bestimmen ob die Daten an einer von ihm bestimmten stelle stehen sollen.

Den Pfad zu dem Datenverzeichniss speichere ich dann einfach in einer globalen Variabel.
Delphi-Quellcode:
const
  Programmname = 'Test';

var
  AppDir: string;

procedure TDataModule1.ProgrammInit;
var
  IniFile: string;
  myIni: TIniFile;
begin
  IniFile := ChangeFileExt(ParamStr(0), '.ini'); // Ininame = Exename
  AppDir := '';
  myIni := TIniFile.Create(IniFile);
  try
    AppDir := myIni.ReadString('programm', 'appdir', '');
  finally
    myIni.Free;
  end;
  if (AppDir = '') then
  begin
    AppDir := GetShellFolder(CSIDL_APPDATA);
    AppDir := AppDir + 'Sharky\' + Programmname;
  end;
  AppDir := IncludeTrailingBackslash(AppDir);
end;

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  ProgrammIni;
end;
Die Ini:
Code:
[programm]
;datadir = c:\test

Bei mir bringt er mir dann immer

Zitat:
[Fehler] MultiKey_uMain.pas(59): E2003 Undefinierter Bezeichner: 'GetShellFolder'
[Fehler] MultiKey_uMain.pas(59): E2003 Undefinierter Bezeichner: 'CSIDL_APPDATA'
Muss man da noch was einbinden ?

(sry wenns bissl OT is)
Sebastian Dietrich
  Mit Zitat antworten Zitat
MathiasSimmack
 
#55
  Alt 27. Sep 2005, 22:12
Wie lange bist du schon hier?

1. Off-topic!
2. Suchfunktion?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry

 
Delphi 2006 Professional
 
#56
  Alt 27. Sep 2005, 22:14
Zitat von Jelly:
Naja, auch rechnerspezifische Daten müssen manchmal von normalen Usern gespeichert werden. Wie handhabt man denn das am Besten.
Auch das ist möglich, dafür gibt es den Ordner "Dokumente und Einstellungen\All Users" und dort haben dann auch alle Nutzer schreibrechte. Diesen besagten Ordner kann man auch per api ermitteln.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

 
Delphi 2007 Professional
 
#57
  Alt 27. Sep 2005, 22:40
Zitat von SirThornberry:
Auch das ist möglich, dafür gibt es den Ordner "Dokumente und Einstellungen\All Users" und dort haben dann auch alle Nutzer schreibrechte. Diesen besagten Ordner kann man auch per api ermitteln.
Auf meinem XP haben die normalen User auch da nur Leserechte.
Tom Peiffer
  Mit Zitat antworten Zitat
Olli
 
#58
  Alt 27. Sep 2005, 22:52
Zitat von NicoDE:
[ot] Schön wär's, dann wird auf meinem Rechner nur die Hälfte installiert... (1.1.5 und 1.9.125) [ot]
[ot]Ich kann Mathias' Beobachtungen bestätigen - auf ziemlich vielen Rechnern im PC-Pool und zwar mit ziemlich vielen Benutzern und seit ziemlich vielen Versionen. Unattended Installs eingeschlossen![/ot]
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
 
#59
  Alt 28. Sep 2005, 08:30
Zitat von Jelly:
Ich handhabe es zur Zeit so. Mit den nötigen Rechten werden meine Dateien, eigentlich ausschliesslich INI Dateien, im Intallationsverzeichnis gesichert. Schlägt dies fehl, so nehme ich auch das Heimverz. Naja, ist aber sicherlich auch nicht optimal. Besser wäre sicher die Registry.
Nein. Die Windows-Registry ist schon so gut wie tot.
Man sieht doch, wohin es gehen soll (schon mit .NET heute):

1.) Applikationen lassen sich per xcopy 'installieren'.
(Ja, der ausführende User muss Adminrechte haben wegen Startmenu-Eintrag z.B., aber installieren sollte imho eh nur der Admin dürfen).
2.) Einstellungen werden im User-Dir gespeichert
3.) Registry ist pfui

Stand heute würde ich es so machen:
Die Applikation speichert ihre Daten nur im User-Verzeichnis. Es gibt eine Backup-Funktion die die Userdaten des aktuellen Users in das AppDir (in ein Unterverzeichnis 'UserName') kopiert - auf wunsch verschiebt - sofern Adminrechte vorhanden sind. Es lässt sich (sofern Adminrechte vorhanden sind) in einer Configdatei direkt im Appverzeichnis einstellen, dass hier der Default-Speicherort ist. Diese Option ist da, sofern es Sinn macht das Programm z.B. auf USB-Stick mit sich zu führen und man die Einstellungen mitnehmen will.

Ich halte es so: Die Styleguides gibt es nicht umsonst. Halte ich mich an die aktuellen Styleguides von MS, so habe ich letzten Endes die kleinsten Probleme, das meine Applikation auch unter Vista und Folgesystemen laufen wird (meine laufen alle ohne Probleme drunter (aktuelle Beta), bei manchen Programmen anderer Hersteller sieht das leider schon wieder gaaaanz anders aus).

Gerade unter .NET laufen solche Applikationen dann aber auch mit dotGNU ohne dass man plattformspezifischen Code einbauen muss. Gerade in Bezug auf Pfade und Rechte des ausführenden Users...

Diese Styleguides gibts halt nicht umsonst
Sebastian Gingter
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

 
Delphi 2006 Professional
 
#60
  Alt 28. Sep 2005, 08:59
Darf ich mal kurz anmerken, daß das DP-eigene SwapIt! ebenfalls versucht, das Ergebnis im Programmverzeichnis zu speichern? Zudem legt es genau das Verhalten an den Tag, das Luckie bemängelt hat und läßt sich nur über den Taskmanagager abschießen, wenn man keine Schreibrechte hat Soviel nochmal dazu
Axel Sefranek
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 9   « Erste     456 78     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz