AppleScript Droplet на DMG не работает - PullRequest
1 голос
/ 12 августа 2010

Эй, у меня есть следующий AppleScript, сохраненный как капля.Он сохраняется в файле DMG, как этот http://dl.dropbox.com/u/1839051/TestDMG.dmg

Проблема в том, что некоторые могут перетащить шаблон на каплю и заставить его работать, когда я пытаюсь перетащить шаблон на каплю пересекпоявляется круговой символ, указывающий, что это действие невозможно.Ничего не происходит, файл не копируется.

У кого-нибудь есть идеи, почему у меня эта проблема и как ее можно исправить?Заранее спасибо, парень.

on open thefiles    
  set outputFolder to (path to application support folder from user domain as text) & "iWork:Pages:Templates:My Templates:"
  do shell script "/bin/mkdir -p " & quoted form of POSIX path of outputFolder

  tell application "Finder"
    duplicate thefiles to outputFolder
  end tell    
end open

Ответы [ 2 ]

1 голос
/ 12 августа 2010

Вместо того, чтобы использовать каплю и иметь пользователя, который перетаскивает файлы на каплю, почему бы просто не сделать установщик, чтобы пользователь только дважды щелкнул по программе установки?Было бы проще, а также, вероятно, избежать вашей проблемы.Я также добавил некоторую обработку ошибок в ваш код, потому что это разумно сделать с помощью кода доставки.Мы также сообщаем пользователю, что произошло.

ПРИМЕЧАНИЕ: у вас также была ошибка в вашем коде.OutputFolder является строкой.Finder требует спецификатор файла.Чтобы превратить строку в спецификатор, вы добавляете слово «файл» или «папка» перед путем к строке.Ваш код, возможно, сработал, но правильный способ его записи - с помощью спецификатора.Другие приложения могут не использовать путь к строке, но все они будут использовать спецификатор ... поэтому привыкните использовать их вместо строк.

try
    -- create the output folder if necessary
    set outputFolder to (path to application support folder from user domain as text) & "iWork:Pages:Templates:My Templates:"
    do shell script "/bin/mkdir -p " & quoted form of POSIX path of outputFolder

    -- find the templates on the dmg disk
    set myPath to path to me
    tell application "Finder"
        set myContainer to container of myPath
        set templateFiles to (files of myContainer whose name extension is "template") as alias list
    end tell

    -- copy the templates to the output folder
    -- NOTE: the script will error if any of the templates already exist
    -- therefore we use a repeat loop and duplicate each file separately with a try block
    -- around it to avoid errors in case some templates have already been installed.
    tell application "Finder"
        repeat with aTemplate in templateFiles
            try
                duplicate aTemplate to folder outputFolder
            end try
        end repeat
    end tell

    -- tell the user everything was OK
    tell me to activate
    display dialog "The templates were successfully installed! You may now use them in Pages." buttons {"OK"} default button 1 with title "Templates Installer" with icon note
on error
    tell me to activate
    display dialog "There was an error installing the templates. Please manually install them by copying them to the following folder." & return & return & (POSIX path of outputFolder) buttons {"OK"} default button 1 with title "Templates Installer"
end try
1 голос
/ 12 августа 2010

Это похоже на проблему с разрешениями, и я должен задаться вопросом, есть ли разница между теми, кто может, и теми, кто не имеет никакого отношения к тому, с какой ОС они работают. Я использую Mac OS 10.6 в качестве администратора и не смог выполнить действие в DMG. Но я смог выполнить действие, если перетащил оба файла из DMG на рабочий стол.

Если вам нужно установить файлы в определенные места на жестком диске для поддержки вашего проекта, то я бы порекомендовал сделать установщик (и соответствующий деинсталлятор) в отличие от представленной вами установки.

...