Dock mit AS ändern auf Mac mit eingeschränkten Rechten

D

djmaq

Aktives Mitglied
Thread Starter
Dabei seit
27.05.2008
Beiträge
276
Reaktionspunkte
0
Hallo Forengemeinde.

Dies ist mein erster Beitrag im Forum "Applescript und Automator", bedeutet also ich bin noch recht neu in der Materie, um nicht zu sagen ein völliger Anfänger ;) Ich schildere mal kurz was ich vor habe.
Bei uns in der Hochschule hab ich an den Macs (10.6.3) nur eingeschraenkte Rechte. Das bedeutet das nach jedem Ausloggen aus dem System dieses wieder in der Grundzustand gebracht wird. Um einigermassen wie auf meinem eigenen Mac arbeiten zu können möchte ich, via Apple Script das von meinem USB Stick gestartet werden soll, ein paar Einstellungen ändern. Unter anderem Exposee einstellen (das funktioniert schon) und das Dock anpassen. Das Dock in Groesse und verhalten anpassen ist auch kein Problem gewesen. Nun möchte ich noch den Inhalt des Dock, also die angezeigten Programme, ändern. Meine Idee dazu ist die entsprechende *.plist Datei durch eine angepasste zu überschreiben, Dock neu starten, Voila. Der Weg an sich funktioniert. Das habe ich in manueller Art und Weise ausprobiert. Nur mit dem Skript klappt's nicht. Irgendwo scheitert es an der Kommunikation zwischen interner Platte und USB Stick.

Sämtlicher nachfolgender Code beschäftigt sich nur mit dem kopieren der *.plist Datei. Der andere Schnick Schank (Dock Size etc) kann ich ja wieder einfügen wenn das mit dem kopieren auch klappt.
Hiermit verscuhe ich von dem USB STick zu kopieren.

Code:
tell application "Finder"
	activate
	copy document file ("/Volumes/USBStickName/com.apple.dock.plist") to folder ("/Users/c3136359/Library/Preferences")
end tell

bekomme aber beim ausführen eine Fehlermeldung die sagt: 'Finder got an error: Can't set <Pfad des Zielordner> to document file <Pfad des Ursprungs>'

Wenn ich allerdings nur Versuche eine Datei vom Stick zu oeffnen

Code:
tell application "TextEdit"
	open "/Volumes/USBStickName/Testdatei.txt"
end tell

Dann klappt das wunderbar. Auch Dateien auf der internen HDD hin und her zu kopieren habe ich hinbekommen. Weiss aber grad nicht mehr wie. Kann ich irgendwie grad nicht reproduzieren. ;(

Google hat mich bei dem Problem leider nicht weiter gebracht. Da kommt das her was bis jetzt weiss.

Kann mir jemand sagen wie der Code aussehen muss damit Datei vernünftig kopiert wird?
Vielen Dank schon mal
 
Versuch doch mal, den Kopiervorgang auf "Unix-Art" durchzuführen:
statt
PHP:
tell application "Finder"
	activate
	copy document file ("/Volumes/USBStickName/com.apple.dock.plist") to folder ("/Users/c3136359/Library/Preferences")
end tell
schreibst Du
PHP:
do shell script "cp /Volumes/USBStickName/com.apple.dock.plist /Users/c3136359/Library/Preferences/com.apple.dock.plist"

Good scripting
Farid
 
  • Gefällt mir
Reaktionen: djmaq
Das funktioniert soweit. Kannst du mir auch sagen wieso? Müsste doch auch eigentlich ohne shell gehen.
Habs bisher nur einzeln probiert. Im Verbund mit den anderen Sachen muss ich's noch testen. Muss ich diese shell Geschichte irgendwie wieder beenden bevor wieder 'normale' Apple Scirpt Anweisungen kommen. Muss danach ja noch das Dock neu starten damit die Änderung wirksam wird.
 
a) File- und Folderpaths in AppleScript haben das Format "NameVolume:Folder:File", Du hast Unixpfade (mit "/") verwendet
b) der Kopierbefehl im Finder lautet duplicate, "copy" ist eine (veraltete) Prozedur um Variablen zu definieren.

Beispiel:
PHP:
tell application "Finder"
    duplicate alias "USBStickName:com.apple.dock.plist" to "NameHardDisk:Users:c3136359:Library:Preferences:"
end tell

Ein Shell-Script kannst Du an jeder beliebigen Stelle einfügen und danach mit normalen AppleScript-Anweisungen weiterarbeiten.

Good scripting
Farid
 
Ich formulier das nochmal andres. Bei shell ist ja die Syntax (etwas) anders. Ich hatte also erwartet das irgendwas kommt wodurch der Apple Script Editor weiß, dass das shell script nun zu Ende ist und wieder Apple Script Anweisungen folgen. Das scheint aber durch die " zu geschehen.

Doppelpunkte anstatt Slash hatte ich in meinem Script Beispiel auch probiert, hat aber trotzdem nicht funktioniert.

Habe deinen Lösungsvorschlag jetzt noch in den Rest des Skripts eingebunden und auch das funktioniert. Nochmals vielen Dank also.
 
Zurück
Oben Unten