Opciones de distribución de extensiones alternativas

Todas las extensiones de Chrome se deben distribuir directamente desde Chrome Web Store o mediante los mecanismos que se describen a continuación. El incumplimiento de uno de estos métodos de distribución constituye una infracción de la política de extensiones de Chrome y puede provocar que la extensión o el software que lo distribuya se marque como software no deseado.

Por lo general, los usuarios instalan extensiones desde Chrome Web Store, pero a veces es posible que quieras que una extensión se instale por otros medios. Estos son dos casos típicos:

  • Una extensión está asociada a otro software, y debe instalarse cada vez que el usuario instale ese otro software.
  • Un administrador de red quiere instalar las mismas extensiones en toda su organización.

Las extensiones que no se instalan desde Chrome Web Store se conocen como extensiones externas. Para los desarrolladores que quieran distribuir una extensión como parte del proceso de instalación para otros software o para los administradores de red que quieran distribuir una extensión en toda su organización, Google Chrome admite los siguientes métodos de instalación de extensiones:

  • Usar un archivo JSON de preferencias (solo para Mac OS X y Linux)
  • Usar el registro de Windows (solo para Windows)

Ambos métodos admiten la instalación de una extensión alojada en un update_URL. En Windows y Mac, update_URL debe apuntar a Chrome Web Store, donde se debe alojar la extensión.

El archivo de preferencias de Linux puede apuntar a tu propio servidor en el que alojas la extensión. El archivo JSON de preferencias también admite la instalación de una extensión desde un archivo de extensión .crx en la computadora Linux del usuario.

Antes de comenzar

Primero, publish la extensión en Chrome Web Store o empaqueta un archivo .crx y asegúrate de que se instale correctamente.

Si la instalas desde una URL de actualización, asegúrate de que la extensión esté alojado correctamente.

Antes de editar el archivo de preferencias o el registro, toma nota de lo siguiente:

  • La ubicación prevista del archivo .crx de la extensión o la URL de actualización desde la que se entrega
  • La versión de la extensión (del archivo de manifiesto o la página chrome://extensions)
  • El ID de la extensión (de la página chrome://extensions cuando cargas la extensión empaquetada)

En los siguientes ejemplos, se supone que la versión es 1.0 y que el ID es aaaaaaaaaabbbbbbbbbbcccccccccc.

Cómo usar un archivo de preferencias

  1. Si realizas la instalación desde un archivo en Linux, haz que el archivo de extensión .crx esté disponible para la máquina en la que deseas instalarla. (Cópialo en un directorio local o en un recurso compartido de red, por ejemplo, \\server\share\extension.crx o /home/share/extension.crx).
  2. Crea un archivo con el siguiente nombre en una de las carpetas que se indican a continuación: aaaaaaaaaabbbbbbbbbbcccccccccc.json, en el que el nombre del archivo (sin la extensión) corresponde al ID de la extensión. La ubicación depende del sistema operativo.

    Mac OS X:

    Para un usuario específico: ~USERNAME/Library/Application Support/Google/Chrome/External Extensions/ Para todos los usuarios: /Library/Application Support/Google/Chrome/External Extensions/

    El archivo de extensión externa para todos los usuarios es solo de lectura si todos los directorios de la ruta de acceso son propiedad del usuario root, tienen el grupo admin o wheel y no pueden escribirse en todo el mundo. La ruta tampoco debe contener vínculos simbólicos. Estas restricciones evitan que un usuario sin privilegios haga que se instalen extensiones para todos los usuarios. Consulta la sección de solución de problemas para obtener más detalles.

    Linux:

    /opt/google/chrome/extensions/

    /usr/share/google-chrome/extensions/

    Nota: Usa chmod si es necesario para asegurarte de que los archivos aaaaaaaaaabbbbbbbbbbcccccccccc.json sean legibles en todo el mundo.

  3. Solo en Linux: Si realizas la instalación desde un archivo, especifica la ubicación y la versión de la extensión con los campos llamados “external_crx” y “external_version” en el archivo creado anteriormente.

    • Ejemplo:
    • json { "external_crx": "/home/share/extension.crx", "external_version": "1.0" }
    • Nota: Debes escapar cada \` character in the location. For example,\server\share\extension.crxwould be"\\server\share\extension.crx"`.
    • Si realizas la instalación desde una URL de actualización, especifica la URL de actualización de la extensión con el nombre de campo “external_update_url”.
    • Ejemplo de instalación desde un archivo .crx local (solo Linux):
    • json { "external_update_url": "http://myhost.com/mytestextension/updates.xml" }
    • Ejemplo de instalación desde Chrome Web Store (Mac y Linux):
    • json { "external_update_url": "https://clients2.google.com/service/update2/crx" }
    • Si quieres instalar la extensión solo para algunas configuraciones regionales de navegador, puedes enumerar las configuraciones regionales compatibles en el campo "supported_locale". La configuración regional puede especificar una configuración regional principal, como "en", en este caso, la extensión se instalará para todas las configuraciones regionales de inglés, como "en-US", "en-GB", etc. Si se selecciona otra configuración regional del navegador que no sea compatible con la extensión, se desinstalarán las extensiones externas. Si falta la lista "supported_locales", la extensión se instalará para cualquier configuración regional.
    • Ejemplo:
    • json { "external_update_url": "https://clients2.google.com/service/update2/crx", "supported_locales": [ "en", "fr", "de" ] }
  4. Guarda el archivo JSON.

  5. Inicia Google Chrome y ve a chrome://extensions. Deberías ver la extensión en la lista.

Solución de problemas de permisos de macOS

En macOS, los archivos de extensiones externas de todos los usuarios solo se leen si los permisos del sistema de archivos impiden que los usuarios sin privilegios los modifiquen. Si no ves extensiones externas instaladas cuando se inicia Chrome, es posible que haya un problema de permisos con los archivos de preferencias de extensiones externas. Para ver si este es el problema, sigue estos pasos:

  1. Inicia el programa de Console. Puedes encontrarlo en /Applications/Utilities/Console.
  2. Si el ícono que se encuentra más a la izquierda en la consola dice “Mostrar lista de registros”, haz clic en él. Aparecerá una segunda columna a la izquierda.
  3. Haz clic en “Mensajes de la consola” en el panel izquierdo.
  4. Busque la string No se pueden leer las extensiones externas. Si hay un problema para leer los archivos de extensiones externas, verás un mensaje de error. Busca otro mensaje de error justo arriba, que debería explicar el problema. Por ejemplo, si ves el siguiente error: "Path /Library/Application Support/Google/Chrome isOwned by the incorrect group", debes usar chgrp o el diálogo Get Info del Finder para cambiar el propietario del grupo del directorio al grupo de administrador.
  5. Después de solucionar el problema, reinicia Chrome. Prueba que la extensión externa ya esté instalada. Es posible que un error de permisos impida que Chrome detecte un segundo error. Si la extensión externa no estaba instalada, repite estos pasos hasta que no veas un error en la aplicación de Console.

Usa el registro de Windows

  1. Busca o crea la siguiente clave en el registro:
    • Windows de 32 bits: HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
    • Windows de 64 bits: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
  2. Crea una clave (carpeta) en la clave Extensiones con el mismo nombre que el ID de la extensión (por ejemplo, aaaaaaaaaabbbbbbbbbbcccccccccc).
  3. En tu clave de extensión, crea una propiedad "update_url" y configúrala con el valor: "https://clients2.google.com/service/update2/crx" (que dirige a la CRx de tu extensión en Chrome Web Store):

    {
      "update_url": "https://clients2.google.com/service/update2/crx"
    }
    
  4. Inicia el navegador y ve a chrome://extensions. Deberías ver la extensión en la lista.

Actualizando y desinstalando

Google Chrome analiza las entradas de metadatos en las preferencias y el registro cada vez que se inicia el navegador y realiza los cambios necesarios en las extensiones externas instaladas.

Para actualizar tu extensión a una versión nueva, actualiza el archivo y, luego, actualiza la versión en las preferencias o el registro.

Para desinstalar la extensión (por ejemplo, si se desinstala el software), quita el archivo de preferencias (aaaaaaaaaabbbbbbbbcccccccccc.json) o los metadatos del registro.

Preguntas frecuentes

En esta sección, se responden preguntas frecuentes sobre las extensiones externas.

A partir de la versión M33, ¿Google Chrome seguirá respaldando la metodología para permitir una "instalación previa"?

Sí, pero solo como una instalación desde un update_URL de Chrome Web Store, no desde una ruta de archivo local.

¿Puedo especificar una URL como una ruta de acceso a la extensión externa?

Sí, utiliza el archivo JSON de preferencias para Mac OS X y Linux, y el registry para Windows. La extensión debe alojarse como se explica en hosting. En el archivo de preferencias, usa la propiedad "external_update_url" para apuntar a un manifiesto de actualización que tenga la URL de tu extensión. En el registro de Windows, usa la propiedad "update_url".

¿Cuáles son algunos errores comunes cuando se instala con el archivo de preferencias?

  • No se especifica el mismo ID o la misma versión que los que aparecen en .crx.
  • El archivo .json (aaaaaaaaaabbbbbbbbbbcccccccccc.json) está en una ubicación incorrecta o el ID especificado no coincide con el ID de la extensión.
  • Error de sintaxis en el archivo JSON (olvidar separar las entradas con comas o dejar una coma final en algún lugar)
  • La entrada del archivo JSON apunta a una ruta incorrecta a .crx (o a la ruta especificada, pero sin nombre de archivo).
  • Las barras inversas en la ruta UNC no tienen escape (por ejemplo, "\\server\share\file" es incorrecto; debería ser "\\\\server\\share\\extension").
  • Problemas de permisos en un recurso compartido de red

¿Cuáles son algunos errores comunes cuando se instala con el registro?

  • No especificar el mismo ID o versión que aparece en Chrome Web Store
  • La clave se creó en una ubicación incorrecta en el registro
  • La entrada del registro dirige a una ruta incorrecta al archivo .crx en Chrome Web Store.
  • Problemas de permisos en un recurso compartido de red

¿Cómo actualizo mis objetos binarios y extensiones nativos en el paso?

Anteriormente, cuando se admitían extensiones fuera de la tienda, era posible tener los objetos binarios nativos y la extensión en el paso de bloqueo. Sin embargo, las extensiones alojadas en Chrome Web Store se actualizan mediante el mecanismo de actualización de Chrome que los desarrolladores no controlan. Los desarrolladores de extensiones deben tener cuidado cuando actualicen extensiones que dependen del objeto binario nativo (por ejemplo, extensiones heredadas con NPAPI).

¿Qué sucede si el usuario desinstala la extensión?

Si el usuario desinstala la extensión a través de la IU, ya no se instalará ni actualizará en cada inicio. En otras palabras, la extensión externa está en la lista de entidades bloqueadas.

¿Cómo salgo de la lista de entidades bloqueadas?

Si el usuario desinstala tu extensión, debes respetar esa decisión. Sin embargo, si tú (el desarrollador) desinstalaste accidentalmente tu extensión a través de la IU, puedes quitar la etiqueta de lista de entidades bloqueadas. Para ello, instala la extensión normalmente a través de la IU y, luego, desinstálala.