
Como posso adicionar um programa ao menu “Abrir com” em um Mac?
Responder1
Você quer dizer o submenu que você obtém ao clicar com o botão direito em um documento? Nesse caso, ele é gerado automaticamente pelo Launch Services com base nos tipos de documentos que seus aplicativos afirmam ser capazes de manipular. Se você olhar dentro de um pacote de aplicativo (clique com o botão direito no aplicativo e selecione Mostrar conteúdo do pacote), dentro da pasta Conteúdo haverá um arquivo Info.plist com várias informações sobre o aplicativo, incluindo uma variedade de tipos de documentos que ele pode abrir (veja a documentação de desenvolvimento da Appleaqui).
TLDR; se o aplicativo tratar esse tipo de documento, ele já deverá estar listado; caso contrário, não sei como adicioná-lo manualmente.
Responder2
Se você abrir a janela "Obter informações" para um tipo de arquivo que deseja modificar (clique com o controle + "Obter informações" ou ⌘ command+ Ienquanto o arquivo estiver selecionado), poderá alterar o programa para o que deseja e clicar em "Alterar Todos". Descobri que isso modifica o menu "Abrir com" para que, se você clicar e clicar em "Abrir com", agora ele mostrará esse aplicativo porque é o novo padrão. A única desvantagem é que você precisa torná-lo o padrão (tentei alterá-lo novamente depois disso e não funcionou).
Não é exatamente a solução perfeita, mas funciona bem no meu caso particular e pode ser útil para outros, e deve ser mais fácil/mais estável que a solução plist.
macOS High Sierra 10.13.5 (17F77)
Responder3
Se você usou o Editor de Scripts ou o Automator para criar um droplet para um aplicativo, quando quiser que o droplet seja adicionado à lista "Abrir com", você pode fazer o seguinte:
Como sempre,salve uma cópia de backup de todos os arquivos de aplicativo/sistema que você planeja modificar!
-- just in case anything goes wrong
Copie a matriz de extensão de arquivo de destino de um aplicativo queélistado na lista "Abrir com" do arquivo info.plist do aplicativo e cole-o na matriz CFBundleDocumentTypes no info.plist do aplicativo de destino (clique com o botão direito no aplicativo, escolha "Mostrar conteúdo do pacote"). Neste exemplo, estou mostrando o antes/depois do
VLC droplet.app
arquivo de informações após substituir os*
dados da extensão curinga (" ") por alguns tipos de arquivo doVLC.app
arquivo de informações:
"/Applications/VLC droplet.app/Contents/Info.plist"
:
Antes:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>*</string>
</array>
<key>CFBundleTypeOSTypes</key>
<array>
<string>****</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
DEPOIS:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFile</key>
<string>aiff.icns</string>
<key>CFBundleTypeName</key>
<string>AIFF file</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>public.aiff-audio</string>
<string>public.aifc-audio</string>
</array>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>divx</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>movie.icns</string>
<key>CFBundleTypeName</key>
<string>DivX file</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeIconFile</key>
<string>m4v.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-4 File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>public.mpeg-4-audio</string>
<string>com.apple.m4v-video</string>
<string>public.mpeg-4</string>
</array>
</dict>
</array>
- Abra o terminal e digite o seguinte comando, alterando
<TARGET_APP>
o nome do aplicativo para o qual você está editando o info.plist para adicioná-lo à lista "Abrir com":
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -f "/Applications/<TARGET_APP>.app/"
- Digite o comando
killall Finder
para forçar a reinicialização do Finder.
Se o aplicativo estiver assinado, modificando um Info.plistinvalida a assinatura do código. Ele também faz com que alguns aplicativos como TextEdit e WriteRoom travem na inicialização em 10.8.
NOTA: peguei algumas informações para esta resposta e editei-as para atualizá-las com informações/explicações um pouco mais detalhadas. O tópico original está localizadoaqui.