• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

BUG: AS-Droplets lassen sich in OSX 10.8 nicht aus dem Terminal triggern - workaround?

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Hi,

ist das schon jmd. anderem aufgefallen und falls ja, hat jmd. ne Lösung/Workaround?


Problem:
In OSX 10.4-10.7 konnte man ein AS-Droplet auch aus dem Terminal oder mit einem Shell Script triggern, in dem man den folgenden Befehl verwendet hat:
Code:
open -a VOLLER_PFAD_ZUM_DROPLET_APP EINE_DATEI

Das geht in OSX 10.8 nicht mehr. Statt den open handler zu triggern, wird der run handler getriggert.


STR:
1. Erstelle ein AS mit folgendem Inhalt und speichere als droplet.app in deinem Benutzerornder
Code:
[B]on[/B] [B]run[/B]    [B]display dialog[/B] "this is run handler"
[B]end[/B] [B]run[/B]


[B]on[/B] [B]open[/B] dropped_items
    [B]if[/B] ([B]count[/B] [B]of[/B] dropped_items) < 1 [B]then[/B]
        [B]display dialog[/B] "count of dropped_items=0 !!!"
        [B]return[/B] 255
    [B]end[/B] [B]if[/B]
    
    [B]set[/B] di_str [B]to[/B] POSIX path [B]of[/B] dropped_items [B]as[/B] [I]string[/I]
    
    [B]if[/B] length [B]of[/B] di_str > 0 [B]then[/B] [B]display dialog[/B] "this is open handler; got file:" & return & di_str
    [B]return[/B] 0
[B]end[/B] [B]open[/B]

2. Öffne Terminal.app und gebe folgenden Befehl ein:
Code:
touch $HOME/testfile

3. Gib folgenden Befehl im Terminal ein:
Code:
open -a $HOME/droplet.app $HOME/testfile



Ergebnis:
* OSX 10.4-10.7:
=> open handler des Droplets wurde getriggert
2013-02-11_1421.png

* OSX 10.8:
=> run handler des Droplets wurde getriggert :(
2013-02-11_1423.png



FYI: Ich hab das schon als Bug an Apple reported.
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Ist bei mir auch so. Probier mal, obs mit dem Automator noch geht. Ansonsten kannst du auch Parameter via Shell an ein AppleScript übergeben:

foo.scpt:

on run args
display dialog args
end run

Aufruf mit:

osascript foo.scpt bar

Das Skript kann dann eben nicht mehr als Droplet benutzt werden
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Oder halt auf diese Art (mit osascript)

tell application "Finder" to open "Pfad:zu:testfile" using "Pfad:zu:droplet.app"

Gruß
 
  • Like
Reaktionen: fyysh

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
@Pill:
Stimmt. Ich hatte auch schon dran gedacht, die Droplets selbst zu ändern und mit den Argumenten zu arbeiten - aber ich mag die Droplets selbst nicht ändern. Schließlich funktionieren sie ja noch auf anderen OSX Versionen.

@Sedna:
Fühl dich geknutscht!


Ich hab nur ein paar Shell Scripte zu ändern und da habe ich das
Code:
open -a SOME_DROPLET A_FILE_LIST
auskommentiert und folgendes ergänzt:
Code:
function get_hfs_path () {
    local posix_path="$1"


    osascript <<-TOKEN
    posix file "${posix_path}" as string
    TOKEN
}




function open_w_droplet () {
    local droplet_path="$1"
    shift
    local open_files=( $@ )


    local droplet_path_hfs
    droplet_path_hfs="$(get_hfs_path "${droplet_path}")"


    local a_file
    local open_files_hfs
    for a_file in ${open_files[@]}; do
        open_files_hfs="${open_files_hfs[@]},\""$(get_hfs_path "${a_file}")"\""
    done
    open_files_hfs="$(echo ${open_files_hfs}|sed 's/^,//')"


    osascript <<-TOKEN
    tell app "finder" to open {${open_files_hfs}} using "${droplet_path_hfs}"
    TOKEN
}


open_w_droplet SOME_DROPLET A_FILE_LIST
Das funktioniert blendend.


Was für'n Heckmeck! Ich hoffe Apple fixt das.

Dennoch: 1000 Dank nochmal sedna für den Schubs!!!
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Fühl dich geknutscht! […] 1000 Dank nochmal sedna für den Schubs!!!
kissr44x20.gif


Vielen Dank für die lieben Worte
szopf27x18.gif