Inno-Setup / Dateiberechtigungen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Inno-Setup / Dateiberechtigungen

Beitrag von Aliobaba »

Hallo,

Mit Dateiberechtigungen habe ich ja so meine Probleme:
http://www.lazarusforum.de/viewtopic.php?f=55&t=7074

Nun versuche ich schon die ganze Zeit, meinem Programm ( http://www.mymemorydb.n-bay.de/ ) ein nettes Installations-Tool beizugeben.
Prinzipiell komme ich mit Inno-Setup sehr gut zurecht, habe aber ein Problem:
Mein Programm arbeitet mit Dateien (Datenbank und "init.txt") in einem untergeordneten Ordner (hier: "\Dt" ) und kann, wenn es mit Inno-Setup installiert worden ist, nicht auf diese Dateien schreibend zugreifen. Erst wenn ich manuell(!) die Zugriffsberechtigungen für "Users" für "\Dt" ändere und alle Funktionen für "users" freigebe, kann mein Programm auch schreibend auf "\Dt" zugreifen.

Wenn ich die Programm-Dateien "ganz normal" zippe und aus dem Internet lade, arbeitet das Programm problemlos; natürlich auch, wenn ich das Programm ausdrücklich mit Administaror-Berechtigung starte.

Vielleicht für die Lösung des Problems noch interessant: Inno-Setup fügt bei der "Installation" dem Ordner "\Dt" die user-names "Users"[keine Write-Berechtigung] und "TrustedInstaller"[Erlaubt nur "List folder Contents" und "Spezial Permissions"] hinzu.

Was kann ich tun, damit jeder Anwender auch "ohne Tricks" mit dem Programm arbeiten kann?

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Aliobaba »

... möglicherweise habe ich jetzt den entscheidenden Hinweis gefunden:

Installing anything to %PROGRAMFILES% (C:\Program Files or C:\Program Files (x86) in versions of Windows supporting UAC (and even Windows XP under a non-power user or administrator account) requires administrator rights. There's no way to work around that; the normal (non-administrator) user isn't supposed to install software to %PROGRAMFILES%.

... aber vielleicht möchte der "normal user" dann doch wenigstens mit dem Programm arbeiten!! :x

... vielleichts hilft diese Info irgendwann später einem anderen "Verzweifelten"

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Inno-Setup / Dateiberechtigungen

Beitrag von shokwave »

Hallo,

unter Windows gibt es die Umgebungsvariable %LOCALAPPDATA%, die den Pfad enthält wohin der Nutzer(also dein Programm) schreiben darf/soll (unbedingt eigenen Unterordner anlegen). Die Variable lässt sich sicherlich in Innosetup nutzen.(nicht probiert)

In Lazarus kannst du diesen Pfad mit

Code: Alles auswählen

meinDatenPfad:=GetAppConfigDir(false);
benutzen, um deine Daten zu finden.

Hoffe das hilft dir weiter.
mfg Ingo

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Aliobaba »

Hallo Shokwave,

Danke für die Antwort! Auf den Installationsordner komme ich so:

Code: Alles auswählen

ExtractFilePath(ExpandFileName(ParamStr(0)))
aber das löste nicht mein Problem.

Ich habe aber die Lösung gefunden: :D (Zitat aus der Homepage von "MyMemoryDB" [FAQ]):

#18 „MyMemoryDB“ meldet beim Beenden „Zugang verweigert“ – „Access is denied“ Was kann man tun?

-> Dies liegt wahrscheinlich daran, dass Sie „MyMemoryDB“ in den Ordner kopiert haben, den „Windows“ standardmäßig für Programme vorsieht (z.b.: „C:\Program Files“). In diesen Ordner lässt „Windows“ aus Sicherheitsgründen keine Schreibvorgänge zu.
Zwei Möglichkeiten:
1. Sie kopieren „MyMemoryDB“ ganz einfach nicht in diesen Ordner.
2. Sie geben dem Ordner ( “\Dt“ ) manuell auf Betriebssystem-Ebene die nötigen Schreibrechte.
http://www.hhsoft.de/Faktura32/FAQs/VistaPDF.aspx
http://www.inno-setup.de/archive/index.php/t-1781.html


Danke trotzdem!!

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Inno-Setup / Dateiberechtigungen

Beitrag von creed steiger »

Das sollte dir weiterhelfen:
unter shell folder constants
http://www.jrsoftware.org/ishelp/index.php?topic=consts

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Antrepolit »

Genau aus solchen Gründen setzt man seit 10 Jahren keine INI-Dateien mehr ein. Das manuelle Setzen von Dateiberechtigungen kann keine Lösung sein. Man klemmt ja auch keinen Draht zwischen die Autotür, um damit jederzeit das Knöpfchen hochziehen zu können.
Ich kann mich nur meinen Vorrednern anschließen: Du solltest die Pfade für Konfigurationsdateien verwenden, die dafür vorgesehen sind. Das ist unter Windows genauso notwendig wie unter Linux. Schließlich handelt es sich um Mehrbenutzersysteme mit entsprechenden Sicherheitskonzepten.

Fener überlege dir mal welche Probleme du bekommst, wenn ein Administrator dein Programm installiert, aber mehrere Benutzer mit eigenen Konten und Konfigurationen damit arbeiten möchten. :roll:
Grüße, Antrepolit

care only if your os is really burning

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Aliobaba »

Hallo,

Danke für die Antworten; bin zwar erst in "Lektion 2", was meine Lazarus-Kenntnisse angeht, aber ich denke, ich hab's verstanden.
Diese wohldefinierten Pfade wären sicherlich eine Lösung für das Problem..

ABER:

Es ist bei "MyMemoryDB" aber schon auch recht "nett", dass man einfach seinen gesamten Ordner nimmt, diesen umkopiert - und schon hat man eine zweite "Installation" auf dem Rechner, gerne auch eine dritte und eine vierte. (Der Platzverbrauch des Programms selber ist zu vernachlässigen).

Diese verschiedenen Installationen (oder besser gesagt: verschiedenen Programmkopien) greifen dann zunächst per default auf die Datenbank im lokalen Ordner zu, können aber auch auf einen gemeinsamen Datenbank-Ordner (auch in einem Netzwerk) zugreifen, auch von verschiedenen Rechnern aus! Eine "echte" Multiuser-Fähigkeit ist durch das verwendete "SQLite" ja eh nicht gegeben; mögliche Schreibkonflikte dürften aber eher selten vorkommen. Großkonzerne mit tausenden Usern gleichzeitig werden mein Programm wahrscheinlich nicht verwenden. [Wenn doch, dann werde ich wohl auf Firebird oder MySql umstellen 8) ]

Mit festdefinierten ".ini"-Pfaden wäre das wahrscheinlich nicht so einfach.
Ich denke, da bleibe ich lieber bei dem Hinweis an den User, den "Windows-spezifischen" Programm-Ordner zu meiden.

Oder??

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Socke »

Wenn mehrere Benutzer auf die gleiche Datenbank zugreifen sollen, böte sich z.B. unter Windows 7 ein Pfad unter C:\Users\Public an (bei Win XP heißt der ein wenig anders).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6782
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Inno-Setup / Dateiberechtigungen

Beitrag von af0815 »

Wenn ich für eine Plattform programmiere, dann sollte ich auch die Konzepte des BS Herstellers übernehmen. Alles andere ist herumeiern und zeigen das man nicht bereit ist, sich an gegebene Konzepte anzupassen oder nicht das Wissen hat.

Klingt hart, läuft aber IMHO immer wieder auf das obige hinaus. Klar, ist es auch für mich nicht leicht das zu erfüllen, wenn du aber im Prof. Umfeld was bringen willst, dann musst du immer obiges im Kopf haben. Spätestens im Support für dein Produkt merkst du, was für einen Murks du gemacht hast. Programmiere immer so, das es ein Admin auf 1000ende Rechner ausrollen kann und du hast den wenigsten Kundensupportaufwand. Es reicht schon der Aufwand für nen BS Wechsel.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Antrepolit »

Aliobaba hat geschrieben:(...)
ABER:

Es ist bei "MyMemoryDB" aber schon auch recht "nett", dass man einfach seinen gesamten Ordner nimmt, diesen umkopiert - und schon hat man eine zweite "Installation" auf dem Rechner, gerne auch eine dritte und eine vierte. (Der Platzverbrauch des Programms selber ist zu vernachlässigen).

(...)

Mit festdefinierten ".ini"-Pfaden wäre das wahrscheinlich nicht so einfach.
Ich denke, da bleibe ich lieber bei dem Hinweis an den User, den "Windows-spezifischen" Programm-Ordner zu meiden.

Oder??

Aliobaba
1. Redundanz zu schaffen hat nur bei Sicherungskopien einen Sinn, nie bei Software. Es ist unsauber. Eine Installation, die auf die verschiedene Benutzerdateien zugreift. Alles andere ist etwas von "seltsam" bis "falsch". Und nur weil ein Programm "läuft", muss es noch lange nicht gut sein. Hier plagen sich alle mit "dem richtigen Weg" rum. Wenn man ihn einmal kennt, ist es aber auch schon getan.

2. Der Hinweis für Endbenutzer ist ja schön und gut, aber wie sieht deine Zielgruppe aus? Wissen dir wirklich, was du da meinst? Letztlich halst du die Probleme, die du zu lösen hast, dem Benutzer auf. Welchen nutzen hat eine solche Software? Ich würde dafür kein Geld bezahlen, denn man kaft sich Probleme ein. Sehe ich derartige "Empfehlungen" bei Freeware, deinstalliere ich sie meist direkt.
Grüße, Antrepolit

care only if your os is really burning

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Aliobaba »

Hallo,

wie lösen dann eigentlich die vielen verfügbaren "portable apps" (die ich sehr gerne mag: http://portableapps.com/de) dieses Problem?

Auch diese Programme kann ich dadurch, dass ich nur einen einzigen Ordner kopiere, überall "hinschieben", sogar von einem PC zu einem anderen - und sie laufen problemlos! Eine tolle Sache!!!! Da ist nix mit "Installation" - einfach kopieren reicht! Der zweite Rechner, auf den ich den Programmordner kopiere "weiß" dann ja auch nichts von diesem Programm und dessen gemachte Einstellungen - die Infos dazu müssen also (entgegen der hier geforderten Konventionen!) auch nur im Programmordner sein.

Oder?

Aliobaba

(Nachtrag: hab' grad ausprobiert: Die PortableApps lassen schlicht und einfach eine Installation im "offiziellen" Programm-Ordner von Windows nicht zu. Die Vorteile des einfachen Verschiebens von Programm-Ordnern und das "Umgehen" der Registry sind also doch nicht so ohne Weiteres von der Hand zu weisen; Konventionen hin oder her!)
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Antrepolit »

Wenn das eine "portable App" ist, hättest du das zu Beginn ja erwähnen können.
Aliobaba hat geschrieben:(...) und sie laufen problemlos! Eine tolle Sache!!!! Da ist nix mit "Installation" - einfach kopieren reicht! (...)
Ok, aber warum brauchst du dann einen Installer, wenn die auch keinen brauchen?
die Infos dazu müssen also (entgegen der hier geforderten Konventionen!) auch nur im Programmordner sein.

Oder?
Vermutlich sind sie das. Allerdings ist etwas "portables" nicht universell portabel. Man bedenke die 32- / 64-Bit-Problematik. Wie portabel kann es also sein... letztlich muss alles 32 Bit sein. Und ALLE benötigten Treiber und wirklich alles, was verwendet wird, muss in 32-Bit-Version im Ordner vorhanden sein. Das bläht die Sache "ein wenig" auf. Abgesehen davon, dass in administrierten Netzen externe Executables oft nicht gestartet werden können wegen der Sicherheit.
Aliobaba hat geschrieben:(...)Die Vorteile des einfachen Verschiebens von Programm-Ordnern und das "Umgehen" der Registry sind also doch nicht so ohne Weiteres von der Hand zu weisen; Konventionen hin oder her!)
Und dennoch beachten die Hersteller der Software wohl irgendwelche Konventionen, deren Software läuft schließlich. Und nebenbei - die Windows-Registry hat mit diesem Thread eigentlich gar nichts zu tun. Du wolltest von Hand Dateiberechtigungen auf geschützte Systemordner zuweisen.
Grüße, Antrepolit

care only if your os is really burning

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Inno-Setup / Dateiberechtigungen

Beitrag von Aliobaba »

Hallo Antrepolit,
Antrepolit hat geschrieben:Wenn das eine "portable App" ist, hättest du das zu Beginn ja erwähnen können.
Tut mir leid! Sorry!
Antrepolit hat geschrieben:Ok, aber warum brauchst du dann einen Installer, wenn die auch keinen brauchen?
Brauch ich tatsächlich nicht wirklich, eigentlich nur, damit eine Verknüpfung auf dem Desktop erstellt wird. :roll:
Außerdem: Ich lerne noch täglich dazu und fand diesen Installer, den ich erst kürzlich "entdeckt" habe ganz, ganz toll :oops:
Antrepolit hat geschrieben:Vermutlich sind sie das. Allerdings ist etwas "portables" nicht universell portabel. Man bedenke die 32- / 64-Bit-Problematik. Wie portabel kann es also sein... letztlich muss alles 32 Bit sein. Und ALLE benötigten Treiber und wirklich alles, was verwendet wird, muss in 32-Bit-Version im Ordner vorhanden sein. Das bläht die Sache "ein wenig" auf. Abgesehen davon, dass in administrierten Netzen externe Executables oft nicht gestartet werden können wegen der Sicherheit.

Und dennoch beachten die Hersteller der Software wohl irgendwelche Konventionen, deren Software läuft schließlich. Und nebenbei - die Windows-Registry hat mit diesem Thread eigentlich gar nichts zu tun. Du wolltest von Hand Dateiberechtigungen auf geschützte Systemordner zuweisen.
Wie gesagt: Ich lerne noch (Befinde mich gefühlt in Lektion 2 [von 100]). Trau mich ja deshalb ja auch nur in der Rubrik "Einsteigerfragen" zu posten. Diese von Dir angesprochenen Probleme kommen wohl erst noch in Lektion 4 oder 5. Ich dachte eigentlich schon, dass "installierte" Programme immer irgendwas mit der "Registry" zu tun haben - und das ist ein Buch mit (mehr als) sieben Siegeln.

Danke ür Deine Hilfe!

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6782
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Inno-Setup / Dateiberechtigungen

Beitrag von af0815 »

Ein paar Informationen zu den Umgebungsvariablen gibt es hier http://de.wikipedia.org/wiki/Umgebungsvariable. Informationen gibt es auch hier im Forum, wenn unter 'Umgebungsvariablen' sucht, zB. http://www.lazarusforum.de/viewtopic.ph ... len#p56804.
Für einiges gibt es im Sysutils die entsprechende plattformunabhängige Abfrage. Steht auch in Forum bereits öfters beschrieben mit dem Keyword 'GetAppConfigDir'.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten