Warum das userdir unter Windows nicht ins Benutzerprofil gehört.

NetBeans speichert nahezu alle seine Einstellungsdateien im so genannten “userdir” ab. In diesem Verzeichnis werden auch der Cache und die Protokolldatei abgelegt. Sollten keine Schreibrechte im Programmverzeichnis vorhanden sein (oder der Benutzer es gar nicht dort speichern wollen) werden auch alle Updates über das Autoupdate in diesem Benutzerverzeichnis abgelegt. Eine Menge Daten. Die Standardeinstellung von NetBeans lautet ${HOME}/.netbeans/<version>. Auf den ersten Blick eine passende Stelle.

Auf “unixartigen” Betriebsytemen ist das $HOME Verzeichnis der Bereich in dem quasi alles benutzerspezifische abgelegt wird. Einstellungen wie Dokumente. Ein “großer Haufen”. Also auch ein wunderbarer Platz für die NetBeans Einstellungen. Unter Windows ist die Sache etwas anders organisiert. DAS “Home” Verzeichnis gibt es nicht. Überhaupt wird unter Windows recht “wild” in der Gegend herum gespeichert. Seien es Einstellungen oder Dokumente. Egal ob für einen Benutzer oder für das System selbst.

Teilweise “historisch gewachsen” aus einer Zeit in der Windows noch keine wirkliche Benutzerverwaltung kannte. Erst seit Windows Vista wurden seitens Microsoft erste Restriktionen eingebaut, die diesen “Wildwuchs” eindämmen sollen. Dazu gehört zum Beispiel, dass Programme nicht mehr einfach so in ihr Programmverzeichnis schreiben sollen/können und benutzerspezifische Daten/Einstellungen in das (dafür vorgesehene) Verzeichnis %APPDATA%\<Programmname> gespeichert werden sollen. Dieses %APPDATA% heißt in deutschen Windows Versionen “Anwendungsdaten” und liegt im Benutzerprofilverzeichnis (%USERPROFILE%).

Und genau hier liegt das “Problem”. Das Benutzerprofil kann auf privaten Rechnern so groß werden wie es möchte. Stört das System nicht im geringsten. Es kann höchstens passieren, dass die Systempartition1 voll läuft. In Firmennetzwerken ist dies aber mitnichten der Fall. Da das Profil beim Anmelden auf den lokalen Rechner kopiert2 wird, ist die Größe beschränkt. (Bei uns in der Firma zum Beispiel sind dies sogar nur 30MB).

In diesen 30MB muss jetzt alles unter kommen: Die Registry des Benutzers, die Anwendungsdaten und in der Grundeinstellung sogar das Verzeichnis “Eigene Dateien”, also jenes Verzeichnis in dem der Benutzer normalerweise alle seine Dokumente abspeichert.

Besonders durch Updates wird dieses Userdir schnell groß. Selbst wenn die vollen 30MB nur für NetBeans verfügbar wären, wäre dies verdammt wenig. Darum wäre es nicht schlecht, wenn das userdir gar nicht erst im Benutzerprofil (Also unter %APPDATA%) angelegt würde. Insbesondere für eigene RCP Anwendungen, die beim Kunden installiert werden soll.

Mir persönlich fällt für diesen Zweck nur der Ordner “Eigene Dateien” ein. Dieser Ordner liegt zwar auch in der Grundeinstellung im Benutzerprofil, kann aber auch von weniger erfahrenen Benutzern über den Eigenschaftsdialog des Ordners leicht an einen anderen Ort des eigenen Systems verschoben werden. In Firmennetzwerken wird dieser Ordner entweder im Benutzerprofil belassen, aber dann ist auch seine Größe egal oder er wurde (von den Administratoren) bereits an eine andere Stelle im System verschoben3.

Die Einstellung, wo das userdir von NetBeans angelegt bzw. gesucht wird, befindet sich in der Datei etc\<brandingname>.conf im Programmverzeichnis von NetBeans. Also dort, wo die Benutzer (normalerweise) selber keine Schreibrechte haben. Somit ist diese Stelle in Fimennetzwerken, wo ggf. verschiedene Benutzer an einem Rechner arbeiten wenig geeignet. Natürlich könnte man das userdir auch per Kommandozeilenparameter ändern. Aber zum Einen gibt es keine Umgebungsvariable in der der Pfad zum “Eigene Dateien” Ordner gespeichert ist und zum Anderen müsste sich dann jeder User selber eine Verknüpfung anlegen. Diese könnte nicht mehr von einem Setup erstellt werden. Für Firmenkunden also insgesamt nicht sonderlich praktikabel.

Der “Launcher” für eine RCP Anwendung kennt von Haus aus auch nur die Variable “${HOME}“, die in der conf Datei verwendet werden kann. Diese zeigt unter Windows aber wiederum auf das Benutzerprofil. Also auch keine Möglichkeit ordentlich (und für alle Benutzer des System gleich) auf “Eigene Dateien” zu zu greifen. Bleibt also nur den (teils computerunerfahrenen) Anwender zu erklären, was eine Kommandozeile ist oder aber einen eigenen Launcher basteln solange in NetBeans keine entsprechende Option implementiert wurde.

  1. hier liegen normalerweise alle lokalen Benutzerprofile []
  2. Und beim Abmelden wieder mit den Server synchronisiert []
  3. wo es höchstwahrscheinlich keine Größenbeschränkung gibt []
Sie können eine Kommentar,oderTrackback von Ihrer Webseite hinterlassen.

6 Responses to “Warum das userdir unter Windows nicht ins Benutzerprofil gehört.”

  1. Moin!

    Das generelle Problem ist ja, dass Windows gerade auf unterschiedlichen Versionen (2000, XP bis Win7) recht wirre Vorgaben macht, wo welche Daten zu speichern sind. Gerade “Eigene Dateien” als Speicherort für Anwendungsupdates zu verwenden, weil so der Nutzer das Quota des Firmennetzwerkes umgehen kann, finde ich eher suboptimal.

    Unter Plugins gibt es in den Einstellungen (letzte Registerzunge) die Möglichkeit “Installationen in gemeinsame Verzeichnisse erzwingen”. Damit muss der Anwender aber entsprechende Rechte haben, in dem Ordner Daten ablegen zu dürfen. Das trennt die Plugin-Speichermenge von dem Userdir.

    Natürlich stellt sich die Frage, ob das machbar ist. Aber wenn der Anwender schon “Eigene Dateien” verschieben soll, um das Quota zu umgehen, muss man auch die Option erwägen, dass der Anwender gleich die RCP Anwendung komplett wo anders installiert (in einem eigenen Ordner mit entsprechenden Berechtigungen).

    Oder Updates werden nur durch Administratoren durchgeführt (in einem Firmennetz nicht ungewöhnlich).

    Alles nicht wirklich ideal. Im Zweifelsfall muss man eine ZIP-Distribution erstellen und einen externen Installer verwenden, der die Windows-Umgebung analysiert, die ZIP-Datei entpackt und entsprechend das Userdir setzt (sei es in dem Shortcut oder in der app.conf).

    Beste Grüße!

  2. Jens sagt:

    Genau.

    Alles nicht wirklich ideal.

    NetBeans müsste sich hierfür (besonders unter Windows) ein neues Konzept überlegen. Mir persönlich gefällt der Ansatz von Eclipse ganz gut. Hier wird beim Programmstart der Ort für das “Workspace” (in dem sich auch die Configurationsdaten der IDE befinden) abgefragt. Der Dialog lässt sich mit einer Defaulteinstellung auch ausblenden. Alles Benutzerspezifisch. In %USERPROFILE% bräuchte dann nur noch der entsprechende Link gespeichert sein.

    Für NetBeans wäre im Dialog entsprechend der Speicherort für das userdir einzustellen.

  3. mike sagt:

    ist hier in der firma ebenfalls ein großes problem.
    wir haben 40mb für unser roaming profile.
    die updates sollten auch nur vom admin eingespielt werden.
    bei uns hat jeder ein home verzeichnis.
    am besten wäre alle daten dort rein, programm mit updates unter “programme”. updates sollte nur der admin einspielen können.

  4. simon sagt:

    Zum Glück kann man Netbeans anpassen und jeden beliebigen Pfad angeben.

  5. Jens sagt:

    @Simon:
    Das ist richtig. Hatte ich ja auch schon geschrieben. Die Frage ist, wie kann man das “systemweit” “individuell” für jeden Benutzer einstellen?

    Vor allem: Welche Voreinstellung kann ich wählen, wenn ich das Zielsystem (das des Kunden) gar nicht kenne?

    Jens

  6. [...] anderer Stelle habe ich erzählt, warum die Grundeinstellung von NetBeans (nämlich alles in $HOME zu speichern) [...]

Leave a Reply


1 + drei =