Applescript не принимает команды arRsync sdef?

Я использую графический интерфейс с открытым исходным кодом для rsync под названием "arRsync". Это прекрасно работает, но нет способа автоматизировать его.

Я пытаюсь использовать Applescript для запуска предустановки (которую вы определяете в Приложении), используя следующий простой скрипт:

tell application "arRsync" to runPreset "presetTest1"

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

Вы можете найти проект arRsync здесь

Я попытался открыть оба файла Info.plist внутри приложения и установить флажок "Scriptable" (или установить "true" для тех из вас, у кого нет редактора списка свойств), но я все еще застрял.

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

1 ответ

Решение

В двоичном файле arRsync отсутствует словарь сценариев. Выполните сборку из исходного кода, сначала сделав следующие изменения:

  1. Отредактируйте Info.plist в проекте, установив для параметра "Scriptable" значение true.
  2. Исправьте словарь сценариев проекта arRsync.sdef. Код для runPreset Команда имеет одну букву слишком мало (коды команд должны быть длиной в четыре фишки или восемь символов). Добавить персонажа в runPreset код атрибута; почти любой персонаж будет работать. При желании файл можно укоротить и упростить, заменив стандартные и текстовые пакеты включением. Создайте резервную копию оригинального файла и создайте новый 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. Добавьте arRsync.sdef к фазе "Копирование ресурсов комплекта" цели arRsync
  4. Переключитесь на сборку выпуска ("Черная Борода" - это название для отладочной сборки).
  5. Построить это.

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

Другие вопросы по тегам