2

Я пытаюсь добавить ярлык для открытия Chrome с URL-адресом, отличным от http, из сценария bash. Вот что у меня есть:

/usr/bin/open -a "/Applications/Google Chrome.app" 'chrome-extension://hgmloofddfasdfasdffgcellkdadsfadsfbjeloo/RestClient.html#RequestPlace:saved/2'   

Поскольку аргумент не начинается с "http", Chrome пытается открыть его как файл, который, конечно же, не существует и не является тем, что я хочу.

Есть ли способ заставить Chrome воспринимать это как URL?

Редактировать:

@mjb - это почти работает. Спасибо.

Расширение (Advanced Rest Client) устанавливается локально. Тем не менее, есть кое-что другое о загрузке в виде файла и загрузке с помощью «chrome-extension://». Когда я загружаю его как файл, я не получаю данные (мои запросы на отдых), которые были сохранены как часть приложения. Без этого это бесполезно.

Вот что я запускаю из bash:

/usr/bin/open -a /Applications/Google\ Chrome.app /Users/me/Library/Application\ Support/Google/Chrome/Default/Extensions/hgmloofdphfgcellkdfbfbjeloo/3.1.7_0/RestClient.html

Он загружает мое приложение, и он появляется - просто без моего контекста / данных. Когда я нажимаю на расширение в Chrome, оно использует следующий URL:

chrome-extension://hgmloofdphfgcellkdfbfbjeloo/RestClient.html#RequestPlace:saved/2

Обратите внимание, что хеш в конце не имеет значения. UUID совпадает с локальным каталогом.

Я также попытался загрузить его с:

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffgcellkdfbfbjeloo/RestClient.html

Это просто открывает страницу Chrome Web Store для этого приложения.

Данные, которые я хочу использовать, по-видимому, находятся в файле базы данных для этого расширения, которое находится в:

/Users/me/Library/Application Support/Google/Chrome/Default/databases/chrome-extension_extension_hgmloofddffdnphfgcellkdfbfbjeloo_0/5

Есть идеи?

3 ответа3

2

Я считаю, что open попытки обработать переданный URL перед передачей его в Chrome. Поскольку он не распознает схему 'chrome-extension', он интерпретирует ее как относительный путь к файлу.

Вместо этого вы можете использовать AppleScript для достижения этой цели.

osascript <<EOD
set theURL to "chrome-extension://nmmhkkegccagdldgiimedpiccmgmieda/html/craw_window.html"
tell application "Google Chrome"
 if windows = {} then
  make new window
  set URL of (active tab of window 1) to theURL
 else
  make new tab at the end of window 1 with properties {URL:theURL}
 end if
 activate
end tell
EOD

Обратите внимание, что приведенный выше код на самом деле AppleScript, завернутый в bash heredoc и переданный команде osascript , так что вы можете поместить его прямо в терминал или в скрипт оболочки.

1

Независимо от того, хотите вы этого или нет, вы говорите Chrome открыть локальный файл.

Если вы пытаетесь перейти к расширению в сети, оно имеет адрес https, например Evernote Web Clipper:

https://chrome.google.com/webstore/detail/evernote-web-clipper/pioclpoplcdbaefihamjohnefbikjilc?hl=en-US

Если ваша цель - загрузить локальное расширение, вы должны указать полный путь к расширению, а не относительный путь. По умолчанию вы можете найти их здесь:

/Users/<USER>/Library/Application Support/Google/Chrome/Default/Extensions

Но у них нет локального chrome-extension:// URL. Если я правильно понимаю, вы хотели бы сделать:

$ /usr/bin/open -a "/Applications/Google Chrome.app" "/Users/<USER>/Library/Application Support/Google/Chrome/Default/Extensions/<EXTENSION-ID>"

Где <USER> - ваш пользователь, а <EXTENSION-ID> - уникальный идентификатор вашего добавочного номера. Это переведет Chrome в режим навигации по каталогам, где вы сможете загрузить любой файл, который вам нужен, оттуда.

Если это не поможет, было бы хорошо уточнить, какова ваша цель в исходном вопросе.

0

Вы можете создать приложение AppleScript для открытия определенной схемы URL с помощью Google Chrome.

  1. Создать новый яблочный скрипт
on open location theURL
  tell application "/Applications/Google Chrome.app"
      set newwindow to make new window
      activate
      set URL of active tab of newwindow to theURL
  end tell
end open location
  1. Сохраните этот скрипт AppleScript как приложение

  2. Отредактируйте Info.plist и добавьте новые ключевые URL types (массив)

Схема URL Info.plist

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>Applescript urls</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>chrome-extension</string>
            </array>
            <key>LSIsAppleDefaultForScheme</key>
            <true/>
        </dict>
    </array>
  1. Запустите приложение один раз, чтобы зарегистрировать его, и при следующем открытии ссылки на расширение Chrome оно откроется в Chrome.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .