Admin-Berechtigung für Initialisation
Der Aufruf vom Skript 'Initialisation [sic!]' (mit 'z' wäre schöner ;) ebenso die Funktion im Package PlotID, da sind noch mehr Typos im Namen) erfordert aufgrund der Verwendung von 'savepath' Admin-Berechtigungen. Hier erschließt sich mir die Vorgehensweise nicht. Aber ich bin mir sehr sicher, dass es eine schlechte Idee ist, zu versuchen, die pathdef von MATLAB direkt zu verändern. Mal davon abgesehen, dass nicht jeder über Admin-Rechte auf dem PC verfügt, wie es regelmäßig Studierenden auf den STUD-PCs ergehen wird (die das ja nutzen sollen), ist es gerade an PCs mit mehreren Nutzern eine schlechte Idee: Nutzer A führt die Initialisierung aus, dann kommt Nutzer B, startet MATLAB und bekommt dann im besten Fall eine Fehlermeldung, dass der dort hinterlegte Pfad nicht verfügbar ist bzw. wird nach den Zugriffsrechten hierfür gefragt (die er nicht hat). Im schlechtesten Fall startet MATLAB aufgrund der Probleme einfach gar nicht mehr. Auch der Kommentar bringt keinen wirklichen Mehrwert: "% This is necessary to use PlotID in your personal MATLAB Scripts". Vermutlich soll damit eine persistente Speicherung der Einstellungen über die Session hinaus ermöglicht werden. Da würden mir spontan drei Varianten einfallen:
- Speichern der Pfade im User Home-Verzeichnis in 'startup.m'. Vorteil ist, das ist User-spezifisch und der Pfad bis dorthin ist immer festgelegt via
fullfile(userpath, 'startup.m');
. - Speichern von allen benötigten Dateien in einem user-spezifischen Ordner im TEMP-Ordner von Windows (jeder Nutzer hat einen eigenen TEMP-Ordner in
C:\Users\[username]\AppData\Local\Temp
. Da dort ein Ordner erst angelegt werden muss, ist ein kleines Stück weit mehr Code erforderlich, aber nicht der Rede wert. Der Pfad dorthin ist via MATLAB-Befehltempdir
stets bekannt. Nachteil dieser Lösung ist, dass beim Löschen aller temporären Dateien, ggf. durch andere Nutzer des PCs oder im Rahmen von Windows Update kommt das hin und wieder vor, der Ordner und alle Einstellungen gelöscht werden. - Speichern von allen benötigten Dateien in einem user-spezifischen Ordner im AppData-Ordner von Windows. Den Pfad kann man sich via EnvironmentVariable über
getenv('appdata')
holen, damit landet man dann im Roaming-Ordner (alternativ viatempdir
und eine Ebene nach oben für ~/Appdata/Local), beide Alternativen müssen für UNIX/macOS getestet werden. Weiteres siehe https://de.mathworks.com/help/matlab/ref/getenv.html - Nutzung von
prefdir
, näheres siehe https://de.mathworks.com/help/matlab/ref/prefdir.html. Würde ich jedoch nicht nutzen, da wieder Release-spezifisch wie schon die implementierte Version.
Können uns hierüber gerne nochmals austauschen.