[GastForen Programmierung/Entwicklung AppleScript "Schon in Gebrauch"-Status prüfen!

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

"Schon in Gebrauch"-Status prüfen!

Anonym
Beiträge gesamt: 22827

12. Mär 2005, 07:13
Beitrag # 1 von 5
Bewertung:
(2462 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich lasse von einem Applescript-Programm automatisch, von vorher per drag-and-drop zugewiesenen QuarkDateien, PS- und danach PDF-Dateien erstellen.
Die zu verarbeitenden Quark-Daten liegen oft auf dem Server und bei mir in der Firma kommt es immer wieder vor, dass irgendeiner aus der Redaktion sich ein QuarkDokument öffnet, um den Artikel nochmals anzuschauen.

Sobald mein Applescript-Programm ein Quark-Dokument nicht öffnen kann, da dieses schon in gebrauch ist, bleibt natürlich der ganze Batch-Prozess stehen.

Wie kann ich ein Dokument vorher prüfen, ob dieses schon in gebrauch ist?

Vielen Dank für die Hilfe im Voraus!

[code:1]set filepath to (choose file with prompt "Ein XPress-Dokument öffnen." of type "XPRJ") as string

tell application "QuarkXPress 6.5"
  open alias filepath use doc prefs yes remap fonts no do auto picture import no
   tell document 1

--------------------------------------
--Sobald das zu öffnende Dokument in Verwendung ist, soll davon ein Alias auf den Schreibtisch kopiert werden.
-------------------------

end tell
end tell
[/code:1]
X

"Schon in Gebrauch"-Status prüfen!

Hans Haesler
  
Beiträge gesamt: 5826

12. Mär 2005, 10:23
Beitrag # 2 von 5
Beitrag ID: #419401
Bewertung:
(2461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo mikelchris,

bitte bringe Deinen Kollegen auf der Redaktion die Grundregel Nummer eins bei: Ein QuarkXPress-Projekt
wird zuerst auf die lokale Harddisk des Rechners kopiert, bevor es geöffnet wird. Nie ein Projekt über das
Netzwerk öffnen. Es gibt keine Ausnahme. Auch "nur schnell" zählt nicht!

Ich weiss, ich weiss: Die lieben Kollegen sind unbelehrbar. Und wenn einer von ihnen schon mal einen schweren
Datenverlust erlebte, hat es dies schon längst vergessen ...

Ich kann es jetzt gerade nicht testen, aber ich kann mir vorstellen, dass dieses Konzept funktionieren könnte:
Der Befehl zum Öffnen wird mit einem 'try'-Wrapper umgeben. Wenn ein Fehler generiert wird, dann wird der Befehl
im 'on error'-Abschnitt ausgeführt:
---
set filepath to (choose file with prompt "Ein XPress-Dokument öffnen." of type "XPRJ") as string

tell application "QuarkXPress 6.5"
   try
      open alias filepath use doc prefs yes remap fonts no do auto picture import no
   on error
      my makeAlias(filepath)
   end try
end tell

on makeAlias(filepath)
   set deskPath to (path to desktop folder) as string
   tell application "Finder" to make new alias at folder deskPath to file filepath
end makeAlias

---
Der Finder-Befehl ist in einem Handler, weil ich nicht gerne verschachtelte tell-Blocks habe. Das Alias der Datei
wird auf dem Schreibtisch erzeugt. Doch kannst Du etwas damit anfangen? Es ist ja nur ein Hinweis auf das geöffnete
XPress-Projekt und nicht eine separate Kopie davon.

Gruss, Hans


als Antwort auf: [#419400]

"Schon in Gebrauch"-Status prüfen!

Hans Haesler
  
Beiträge gesamt: 5826

14. Mär 2005, 09:06
Beitrag # 3 von 5
Beitrag ID: #419402
Bewertung:
(2461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo mikelchris,

jetzt habe ich meinen Vorschlag testen können. Das Resultat ist, wie ich befürchtet hatte: Es klappt nicht.
Der 'try'-Wrapper hilft nicht, die Fehlermeldung "Schreibgeschützte Datei. [-54]" zu verhindern.

Und was ist, wenn man den Zusatz 'ignoring application responses' einschiebt und nach der 'open'-Zeile
mit 'end ignoring' abschliesst? Funktioniert nicht. Die Reaktion des Programms wird nicht ignoriert.

Eine weitere Möglichkeit wäre, durch die Scripting Addition "Standard Additions" eine Auskunft über den
Zustand der Datei zu erhalten.
Code
[b]set getInfo [b]to info for [b]of file filepath 

Aber auch hier Fehlanzeige. Das Attribut 'locked' zeigt 'false' (= falsch), weil in den Informationen die
Checkbox "Geschützt" nicht aktiviert ist. Und der berühmte 'busy status' ist ebenfalls 'false', weil der
Zustand, dass die Datei "busy" (d.h. "beschäftigt") ist, nur während des Kopierens – also solange nicht
alle Bytes beeinander sind – als 'true' angezeigt wird.

Auch der Finder kennt das Attribut 'locked'. Aber dieses gibt ebenfalls 'false' wieder.

Einiger Ausweg: Den Zugang vorübergehend sperren, indem der Ordner, welcher die Dateien enthält, auf ein
Droplet gezogen wird, welches die Zugriffsrechte ändert. Siehe den Code im Thema "Während Scriptausführung:
Zugriff von außen verhindern" http://www.page-online.de/page/forum/viewthread/2495

Gruss, Hans


als Antwort auf: [#419400]

"Schon in Gebrauch"-Status prüfen!

Anonym
Beiträge gesamt: 22827

1. Jul 2005, 20:43
Beitrag # 4 von 5
Beitrag ID: #419403
Bewertung:
(2461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
bei einigen meiner Skripts muss ich vorher genau prüfen, ob die Datei in Gebrauch ist. Es handelt sich um XPress-Dateien auf einem Helios Server.
Meine Versuche mit get info sind fehlgeschlagen, wie Hans auch bereits berichtet hat.

Folgendes hatte dann Erfolg:
[code:1]set thisFilePath to "Develop:dev-mac%0:MeineDatei.qxd"
try
 open for access (file thisFilePath)
 set theFileContent to read (file thisFilePath) for 16
 close access file thisFilePath
 set isDocBusy to false
on error
 try
  close access file thisFilePath
 end try
 set isDocBusy to true
end try
return isDocBusy
[/code:1]
Aber Achtung, die Datei muss auf einem Helios Server liegen.
Das funktioniert nicht auf einer Mac-HD!
(Ein Systemtechniker konnte mir auch erklären weshalb. Ich kann das aber nicht mehr wiedergeben!) Außerdem habe ich das nur für XPress-Dateien geprüft, es kann gut sein, dass andere Applikationen nicht dafür sorgen, dass ihre Datei gesperrt ist.


als Antwort auf: [#419400]

"Schon in Gebrauch"-Status prüfen!

Hans Haesler
  
Beiträge gesamt: 5826

2. Jul 2005, 23:48
Beitrag # 5 von 5
Beitrag ID: #419404
Bewertung:
(2461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

danke für Dein Beispiel-Script. Ich werde es prüfen, sobald ich am Montag direkten Zugriff
auf den Server haben werde.

Zwar sollte man XPress-Dateien nie über das Netzwerk öffnen. Ich kopiere sie immer zuerst
auf die Harddisk. Damit wird die Gefahr von beschädigten Dateien verringert.

Gruss, Hans


als Antwort auf: [#419400]
X