Applescript не принимает команды arRsync sdef? - PullRequest
0 голосов
/ 01 декабря 2010

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

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

tell application "arRsync" to runPreset "presetTest1"

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

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

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

1 Ответ

1 голос
/ 01 декабря 2010

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

  1. Измените Info.plist в проекте, установив для параметра «Scriptable» значение true.
  2. Исправьте словарь сценариев проекта, arRsync.sdef.Код для команды runPreset содержит на одну букву слишком мало ( команда коды должны состоять из двух FourCC или восьми символов).Добавьте символ к атрибуту кода 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 к «Копировать ресурсы комплекта» phase цели arRsync
  4. Переключить в Release build ("Blackbeard" - это название для отладочной сборки).
  5. Build it.

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

...