Как я передаю параметры командной строки для Прикрепления объектов?

Я пытаюсь следовать инструкциям для прикрепления вкладок запуска в Chrome. На OS X, как я добавляю параметры командной строки к объектам, которые сохраняются в моем прикреплении?

74
задан 08.04.2013, 17:45

2 ответа

У Вас есть в основном две опции:

Опция 1: Используйте Automator для создавания приложения, которое в действительности запускает Chrome с параметрами командной строки.

Запустите Automator и выбор для создавания Приложения. Дважды щелкните по Run Shell Script в папке Library/Utilities и замените текстовое содержание — cat — со следующим:

open -a "Google Chrome.app" --args -pinned-tab-count=4
# keep the .app suffix or will break with Parallels

Сохраните где угодно, Вам нравится.

Для замены значка этого приложения Получите Информацию о реальном Google Chrome, нажмите на значок вверху слева, нажмите Cmd-C, Получите Информацию о своем приложении Automator Chrome, нажмите значок и нажатие Cmd-V.

Так как это - другое приложение, Прикрепление отобразит два приложения Chrome, когда это будет работать: Chrome и Ваше средство запуска Chrome.


Опция 2: Отредактируйте свой комплект приложений для запуска сценария вместо этого. Этот сценарий запустит реальное приложение, добавляя параметр командной строки.

Щелкнуть правой кнопкой Google Chrome.app и выберите Выставочное Содержание Пакета. Перейдите в Contents/ и открытый Info.plist в Редакторе/XCode Списка свойств (инструменты разработчика Apple), или третье лицо plist редактор.

Ищите запись CFBundleExecutable или Executable File. Помните его значение (например. firefox-bin для Firefox). Замените его parameterized-app.sh.

Откройте Terminal и введите следующее:

touch /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh
open /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh

Редактор для .sh файл откроется. Установите содержание файла к:

#!/usr/bin/env bash
exec /Applications/Firefox.app/Contents/MacOS/firefox-bin -ProfileManager

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

Сохраните и закройтесь. В Терминале введите следующее:

chmod +x /Applications/Firefox.app/Contents/MacOS/parameterized-app.sh

Теперь, закройте Терминал и переместите Ваше приложение (который не должен работать прямо сейчас) к другой папке и назад снова. Это обновит Launch Services, иначе Ваши изменения будут проигнорированы и раздражать Вас очень.

Теперь, когда Вы открываете свое приложение, оно на самом деле выполнится .sh файл, который в свою очередь запустит фактический исполняемый файл, отправляя командную строку args вперед.

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

96
ответ дан 07.12.2019, 08:09

Вы могли записать сценарий, который запускает Chrome, но это не было бы значком приложения в прикреплении, и это заставит отдельный значок Chrome появляться. Таким образом, необходимо будет создать пакет приложений.

Во-первых, сделайте копию своего приложения Chrome. Затем существует два подхода, которые могли бы работать; я не уверен, который будет играть лучше с Mac OS X и/или самообновлением Chrome.

  1. Сделайте 'средство запуска', которое просто называет Chrome с аргументами.

    • Откройтесь пакет приложения (щелкните правой кнопкой по Выставочному Содержанию Пакета → в Средстве поиска), и выведите все кроме Info.plist, PkgInfo и MacOS.
    • В папке MacOS удалите исполняемый файл “Google Chrome” и замените его сценарием оболочки, который называет реальный Chrome:

      #!/bin/sh
      exec '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' -pinned-tab-count=4
      

      Не забывайте chmod +x сценарий.
       

  2. Измените пакет Chrome, который Вы на самом деле выполняете.

    • В папке MacOS переименуйте “Google Chrome” и запишите сценарий оболочки, который вызывает реальную вещь с дополнительными аргументами:

      #!/bin/sh
      exec '/Applications/My Modified Google Chrome.app/Contents/MacOS/Google Chrome-real' -pinned-tab-count=4
      
    • Я вижу, что пакет Chrome имеет что-то о подписывании кода; Вы, возможно, должны были бы удалить CodeResources и/или _CodeSignature заставить это работать с этими изменениями.

Это - все на основе моего понимания пакетов приложения для Mac; я на самом деле не протестировал эти изменения на Chrome в частности. Даже возможно, что исполняемый файл Chrome на Mac не поддерживает эту опцию, поскольку приложения Mac, как обычно ожидают, не будут запущены с управляемыми параметрами командной строки (в отличие от этого, например, Windows, где приложения обычно запускаются через ярлыки, которые могли встроить опции).

10
ответ дан 07.12.2019, 08:09

Теги

Похожие вопросы