Verzeichnisse & Rechte

Fragen zum AKInstaller
Antworten
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Verzeichnisse & Rechte

Beitrag von Andreas Kapust »

Um den immer wiederkehrenden Fragen entgegen zu wirken, hier eine Zusammenfassung:

Frage:
...
besteht im AKInstaller die Möglichkeit, in einem Setup mit dem festgelegten Installationsverzeichnis "<PROGRAMDIR>\<MANUFACTURER>\<PRODUCTNAME>", eine einzelne Datei nach C:\ zu installieren? Ich konnte leider keine Möglichkeit finden, eine Art zweites INSTALLDIR anzulegen.
Eine andere Möglichkeit einzelne Dateien nach C:\ zu bekommen wäre ein seperates Setup, welches beispielsweise nach oder vor der Installationausgeführt wird. Haben Sie vielleicht eine elegantere Möglichkeit um das genannte Problem zu lösen?

Antwort:
Einstellungen wie <WINROOT>\<PRODUCTNAME> oder schlimmer noch C:\<PRODUCTNAME>, D:\Irgendwo\ sollten tunlichst unterlassen werden!

Was ist, wenn z. B. es kein C:\ bzw. D:\ gibt?
Ja, es gibt durchaus Computer, auf denen <WINDOWS> nicht auf C:\ liegt oder auf C:\ kein Zugriff besteht.

Es gibt eigentlich nur zwei Anwendungsfälle in denen eine Installation auf <WINROOT>\.. toleriert werden kann. A: Es ist von einer Firma so vorgeschrieben und B: Anwendungen von Drittanbietern benötigen dies (wobei dann Letztere die Zeit seit dem C64 verschlafen haben).

Zugriffs-Rechte SIND keine Begründung. Hierfür lassen sich Rechte setzen, oder aber entsprechende (öffentliche) Ordner finden, in denen Schreibrechte bestehen.

Windows NT (3.1)/NTFS+ACL kam im Juli 1993 auf den Markt, so langsam sollte man sich an NT-Zugriffsrechte gewöhnt haben. ;-)


Applikationsdaten sollten unter <APPDATA>\<MANUFACTURER> abgelegt werden.
(Mittels Registry-Eintrag AppPath lässt sich der DLL-Suchpfad einfach angleichen, so dass eine Applikation in <INSTALLDIR> eine DLL in <WO_AUCH_IMMER> findet.)
Selbst das Ablegen von Dateien unter <INSTALLDIR> ist nicht möglich, wenn dort nicht Rechte vergeben werden oder der Applikation beim Start die Rechte eingeräumt werden. Auch feste Verzeichnisse wie C:\Dokumente und Einstellungen sollten tunlichst unterlassen werden. Und wer hätte es nicht geahnt, %ProgramFiles% liegt nicht immer unter C:\Programme. Dafür und für viele weitere Verzeichnisse gibt es Platzhalter!
Zu Verzeichnisrechten. NT-Rechte existieren nicht ohne Grund. Auf keinen Fall sollte versucht werden, bei Systemverzeichnissen die Rechte zu ändern. Dies kann man im <INSTALLDIR> tun (und der AKInstaller unterstützt dies auch) aber nicht bei Verzeichnissen wie <SYSTEM>.

Wenn es doch unbedingt sein muss:

Auf der Dateien-Seite lassen sich neue und auch feste Verzeichnisse einrichten. Bei festen Verzeichnissen sogar direkt über eine Angabe von: C:\Test1\Test2\Test3. Der bessere Weg bei dieser Art von Ordnern wäre, dieses über die Datenverzeichnisse (Zielverzeichnis-Seite) oder über Registry-Pfade (Env & Registry-Pfade) zu bewerkstelligen. Beide Varianten legen den Pfad in der Registry ab (siehe Anleitung) und können so angesteuert werden. Eine dritte Möglichkeit besteht über eigene Platzhalter, welche per Install-Script oder stvar.ini gesetzt werden können.

Bestimmte (System-)Dateien, mfc42.dll um nur eine zu nennen, gehören in das System32-Verzeichnis (und sollten dann auch nicht deinstalliert werden) oder in das <INSTALLDIR>. 'Private' DLLs oder Komponenten von anderen Anbietern (OCXe) müssen, wenn im System-Verzeichnis liegend mit dem Schalter Gemeinsame Datei versehen werden und über eine Versionsnummer verfügen.

COM-Komponenten (OCX) DÜRFEN nicht im INSTALLDIR sondern MÜSSEN ausschließlich im SYSTEM registriert werden. Ansonsten funktionieren möglicherweise andere Applikationen nicht mehr korrekt!

Und auch hier muss für das System32-Verz. ein Platzhalter (<SYSTEM>) genutzt werden. Also keine Konstrukte wie c:\Windows\system32 oder <WINDOWS>\System32 dieses schlägt unter diversen System fehl!

Komponenten von 32Bit-Anwendungen (deren DLLs) haben nichts im <WINDOWS>\System-Ornder zu suchen! :wink:

Wohin mit den Dateien:
Programmdaten sollten weiterhin in <INSTALLDIR> liegen. Allgemeine Daten (also für alle User) sollten nicht nur unter Vista in <APPDATA_A_U>\<MANUFAKTURER>\ liegen.

Config-Dateien (damit sie beim Deinstall auch gelöscht werden) könnte man unter <APPDATA_A_U>\<MANUFAKTURER>\[Benutzername] ablegen.

Datenbanke für alle Benutzer unter <APPDATA_A_U>\<MANUFAKTURER>.

Rechte:
Beachten Sie jedoch, dass unter NT-Systemen Dateien immer mit den Rechten des Benutzers geschrieben werden, der das Setup aufgerufen hat. Wird ein Setup als Administrator ausgeführt und dieses legt eine Datei oder ein Verzeichnis unter <APPDATA_A_U>\ an, kann nur ein Administrator die Daten auch ändern.

Da unter 2000/XP leider viel Benutzer mit den Standard-Adminrechten arbeiten, verhält sich ein Setup scheinbar unter Vista anders als unter XP. Leider hat es MS versäumt, dem Benutzer nach er Installation des Betriebssystems eindrücklich nahe zu legen, das Adminkonto nicht als Arbeitkonto zu nutzen, sonst wäre der Umstand bekannt, dass ein Benutzer nicht die Dateien eines Admins ändern kann. (Und es gäbe wohl auch weniger Viren und Spam :wink: )

Sollen Dateien von allen Benutzern änderbar sein, so müssen für das Verzeichnis z. B. <APPDATA_A_U>\<MANUFAKTURER> die entsprechenden Rechte für Administrators, System und User gesetzt werden, so wie es in der Anleitung unter Rechte-Einstellungen beschrieben ist.
Zuletzt geändert von Andreas Kapust am 09.03.2011, 16:14, insgesamt 1-mal geändert.
Grund: Update
Antworten