2010-12-01 3 views
0

Я использую интерфейс GUI с открытым исходным кодом для rsync, называемый «arRsync». Он отлично работает, но нет возможности автоматизировать его.Applescript не принимает команды arRsync sdef?

То, что я пытаюсь сделать, это использовать Applescript для запуска предварительной настройки (который вы указали в Заявке), используя следующий простой скрипт:

tell application "arRsync" to runPreset "presetTest1"

Проблема в том, Applescript думает «runPreset» является переменная, а не команда. Я также попробовал вариант tell/end-tell выше, без кубиков. Команда «runPreset» является частью arRsync.sdef

Вы можете найти проект arRsync here

Я попытался открытие как Info.plist файлы внутри приложения и установив флажок «SCRIPTABLE» (или настройка он для «истины» для тех из вас, у кого нет редактора списка свойств), но я все еще застрял.

Я скриптовый нуб, когда дело доходит до какао: р помощь будет высоко оценена

ответ

1

Двоичный arRsync не хватает словаря сценариев. Создайте из источника, сначала внесите следующие изменения:

  1. Редактировать Info.plist в проекте, устанавливая параметр «Сценарий» в true.
  2. Исправить словарь сценария проекта, arRsync.sdef. Код для команды runPreset имеет одну букву слишком мало (command кодов должно быть два FourCC или восемь символов). Добавить символ в атрибут кода runPreset; почти любой персонаж будет работать. Если вы хотите, файл можно сократить и упростить, заменив стандартные и текстовые пакеты на include. Резервное копирование в Orignal файл и сделать новый arRsync.sdef, содержащие:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd"> 
    <dictionary title="arRsync Terminology" 
          xmlns:xi="http://www.w3.org/2003/XInclude"> 
        <xi:include href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" 
           xpointer="xpointer(/dictionary/suite)"/> 
        <suite name="arRsync Suite" code="arRs"> 
         <command name="runPreset" code="runPPrst"> 
          <cocoa name="runPreset" class="scriptController"/> 
          <direct-parameter type="any"/> 
         </command> 
        </suite> 
    </dictionary> 
    

    В качестве альтернативы, вы можете просто заменить runPreset командный элемент с одним из выше.

  3. Add arRsync.sdef в «Копировать Bundle ресурсы» phase в arRsync целевой
  4. Switch Релиза build («Борода» это имя для отладки сборки).
  5. Постройте его.

Это должно создать версию arRsync, предназначенную для скриптов. Как вы уже поняли, вам также может понадобиться играть с целевым SDK.

+0

ОК просто попробовал, что он сохраняет как «Blackbeard.app» вместо «arRsync.app», но содержимое выглядит точно так же. Я попытался скомпилировать с и без редактирования файла info.plist для включения сценариев, та же проблема все еще существует. Спасибо за помощь! – S0ULphIRE 2010-12-02 04:45:30

Смежные вопросы