1 votos

Cómo cambiar la aplicación comando ejecutar cuando se inicia a partir del Dock?

En Windows, usted puede editar un acceso directo de la aplicación y cambiar el acceso directo del destino. ¿Cómo hacer esto en Mac OS?

Por ejemplo, quiero cambiar mi aplicación de Cromo para hacer el registro detallado, añadiendo esto al ejecutar el comando: --enable-logging --v=1.

1voto

0942v8653 Puntos 3617

Usted puede utilizar Automator o AppleScript para hacer una aplicación que se inicia la aplicación con argumentos específicos:

-- Applescript version
do shell script "open -a 'Google Chrome' --args --enable-logging --v=1"

O usted puede ir a la aplicación del paquete y modificar la Información.plist, cambiando CFBundleExecutable de (por ejemplo) "Google Chrome" para el nombre de un nuevo contenedor de secuencia de comandos que pones en MacOS. He aquí una secuencia de comandos de Python que automatiza que para usted (Que en realidad constituye una nueva aplicación con enlaces simbólicos). Ejecutar con python linkapp.py<path to actual app> <where to put new app> en la Terminal. Cuando se le pregunta si desea crear un contenedor de secuencia de comandos, respuesta y.

(la secuencia de comandos ahora está en GitHub, pero voy a tratar de mantener esta actualizada)

#!/usr/bin/env python

import sys
import os
import shutil
import subprocess
import re

WRAPPER_SCRIPT = '''\
#!/usr/bin/env bash
executable="$(dirname "$0")/%s"

# add flags here.
"$executable" 
'''

def printerr(message):
    sys.stderr.write("\033[1;31m" + message + "\033[0m")

def link_item(item):
    os.symlink(os.path.join(bundle_contents_path, item),
               os.path.join('.', item))

def replace_executable(filename, new_executable):
    old_executable = subprocess.check_output(['defaults', 'read', os.path.abspath(filename), 'CFBundleExecutable'])
    old_executable = old_executable.rstrip()
    subprocess.call(['defaults', 'write', os.path.abspath(filename), 'CFBundleExecutable', new_executable])
    return old_executable


if len(sys.argv) <= 2:
    printerr("Usage: linkapp.py <app-bundle> <new-place>\n")
    exit(1)


bundle_path = os.path.abspath(sys.argv[1])
bundle_contents_path = os.path.join(bundle_path, 'Contents')
new_contents_path = os.path.abspath(os.path.join(sys.argv[2], 'Contents'))
os.makedirs(new_contents_path)

# loop through the app bundle and symlink everything
#                                        (except Resources, MacOS & Info.plist)
os.chdir(new_contents_path)
for i in os.listdir(bundle_contents_path):
    if i.lower() != 'info.plist':
        if i.lower() in ['resources', 'macos']:
            os.makedirs(i)
            for j in os.listdir(os.path.join(bundle_contents_path, i)):
                link_item(os.path.join(i, j))
        else:
            link_item(i)

# just copy Info.plist for easy editing
shutil.copy(os.path.join(bundle_contents_path, 'Info.plist'), new_contents_path)
subprocess.call(['plutil', '-convert', 'xml1', 'Info.plist'])

printerr("Create wrapper script [y/n]? ")
ans = sys.stdin.read(1)
if ans.lower() == 'y':
    os.chdir('MacOS')

    wrapper_script_file = 'run_with_specified_arguments.sh'

    original_executable = replace_executable('../Info.plist', wrapper_script_file)

    with open(wrapper_script_file, 'w') as f:
        f.write(WRAPPER_SCRIPT % original_executable)
    os.chmod(wrapper_script_file, 0755)

    subprocess.call(['open', '-R', wrapper_script_file])

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X