sistema services play operativo google desactivar como automaticas actualizaciones qt cross-platform auto-update

qt - operativo - desactivar actualizaciones google play services



¿Cómo puedo habilitar las actualizaciones automáticas en una aplicación multiplataforma de Qt? (11)

A pesar de que funciona de una manera diferente a Sparkle, BitRock InstallBuilde r contiene un autorregulador escrito en Qt que se puede usar de forma independiente (descargo de responsabilidad, yo soy el desarrollador original de BitRock). Es una aplicación comercial, pero tenemos licencias gratuitas para proyectos de código abierto.

Me encantan las aplicaciones que pueden actualizarse sin ningún esfuerzo del usuario (piense: Sparkle framework para Mac). ¿Hay algún código / biblioteca que pueda aprovechar para hacer esto en una aplicación Qt, sin tener que preocuparme por los detalles del sistema operativo?

Al menos para Windows, Mac y binarios de Linux propiedad del usuario.

Podría integrar Sparkle en la versión de Mac, codificar algo para el caso de Linux (solo para un binario autónomo, propiedad del usuario; no interferiré con el paquete de distribution , si mi programa está empaquetado alguna vez), y encontraré alguien para ayudarme en el lado de Windows, pero eso es terriblemente doloroso.


Desarrollé una biblioteca de autoactualización que funciona maravillosamente en Mac OS X, Linux y en casi todos los Unix que le permiten desenlazar un archivo mientras el archivo aún está abierto. La razón es que simplemente extraje el paquete descargado sobre la aplicación existente. Desafortunadamente, debido a que confié en esta funcionalidad, me encontré con problemas en Windows ya que Windows no te permite desvincular un archivo abierto.

La única alternativa que puedo encontrar es usar MoveFileEx con el indicador de reemplazar al reiniciar, pero eso es horrible.

Sin embargo, el cambio de nombre del directorio de trabajo de la aplicación funciona en Windows 7 y Windows XP. No he probado Windows Vista todavía.


Enchufe desvergonzado: Fervor , un autoupdater de aplicaciones multiplataforma (basado en Qt) inspirado en Sparkle.


Enchufe desvergonzado: esta es una pregunta relativamente antigua, pero pensé que podría ser útil mencionar una biblioteca que creé recientemente, que denominé "QSimpleUpdater". Además de notificarte si hay una versión más nueva, te permite descargar el registro de cambios en cualquier formato (como HTML o RTF) y descargar las actualizaciones directamente desde tu aplicación usando un cuadro de diálogo.

Como puede esperar de un proyecto de Qt, funciona en cualquier plataforma compatible con Qt (probado en Windows, Mac y Linux).

Campo de golf:

Captura de pantalla:


He encontrado que WebUpdate es bastante útil, aunque está escrito con wxWidgets. Pero no se preocupe, es una aplicación separada que maneja sus actualizaciones. Los pasos para integrarlo son bastante simples: simplemente escriba dos archivos XML y ejecute el actualizador. Y sí, es multiplataforma.

La ventaja de esto es que descargará y descomprimirá / instalará automáticamente todo lo que necesite y no solo proporcionará una ventana emergente con una notificación sobre una nueva versión y un enlace para descargarla. Otra cosa que puedes hacer con ella son las acciones personalizables.

La página principal del proyecto está here , puede leer los docs o echar un vistazo al tutorial oficial.


La publicación del blog Mixing Cocoa y Qt puede resolver el problema de la plataforma Mac.


No es una solución completa, pero una herramienta multiplataforma (Windows, Mac, Linux) para crear paquetes para actualizaciones automáticas e instalarlas está disponible en https://github.com/mendeley/Update-Installer . Esta herramienta no se ocupa de publicar actualizaciones o descargarlas.

Esto fue escrito para usar con una aplicación basada en Qt pero para hacer que el instalador de actualización sea pequeño, independiente y fácil de construir, el instalador usa solo bibliotecas de sistema estándar (tiempo de ejecución C ++, pthreads / libz / libbz2 en Linux / Mac, API Win32 en Windows , Cocoa en Mac, GTK con respaldo en Linux). Esto simplifica la entrega de actualizaciones que incluyen nuevas versiones de Qt y otras bibliotecas que no son del sistema y de las que puede depender su aplicación.

Antes de considerar esto, sugeriría:

  • Si solo está creando para dos plataformas, considere utilizar marcos de actualización automática estándar y bien probados para esas plataformas, por ejemplo. Sparkle en Mac, Google''s Omaha en Windows o sistemas de actualización automática incorporados en marcos de instalación populares (por ejemplo, InstallShield). No he probado BitRock.
  • En Mac, la App Store de Mac puede ser una buena opción. Ver https://bugreports.qt.io/browse/QTBUG-16549 sin embargo.
  • En Linux, considere crear un paquete .deb y un repositorio simple para alojarlo. Una vez que los usuarios tienen un repositorio configurado, las herramientas de actualización de software de todo el sistema se encargarán de buscar e instalar nuevas versiones. Sin embargo, los pasos para configurar un nuevo repositorio son demasiado complejos para muchos usuarios nuevos de Ubuntu / Debian. Lo que hicimos, y también lo que han hecho Dropbox y Google, es crear un paquete .deb que configura el repositorio como parte de la instalación del paquete.

Algunas otras notas sobre cómo crear un actualizador:

  • En Windows Vista / 7, si la aplicación está instalada en todo el sistema (por ejemplo, en C: / Program Files / $ APPNAME), los usuarios verán un aviso de UAC aterrador cuando el actualizador intente obtener permisos para escribir en el directorio de instalación. Esto se puede evitar instalando en un directorio de escritura por el usuario (deduzco que esto es lo que hace Google Chrome) u obteniendo un certificado Authenticode y usándolo para firmar el binario del actualizador.
  • En Windows Vista / 7, una aplicación .exe o DLL no se puede eliminar si está en uso, pero el actualizador puede mover el .exe / DLL existente fuera del camino en un directorio temporal y programarlo para eliminarlo en el próximo reinicio.
  • En Ubuntu, los repositorios de terceros están deshabilitados después de las actualizaciones de distribución. Google soluciona esto creando un trabajo cron para volver a agregar el repositorio si es necesario.

OK, entonces supongo que lo tomo como un "no (multiplataforma)". ¡Es muy malo!


Puede usar UpdateNode que le brinda todas las posibilidades para actualizar su software. ¡Está utilizando un cliente Qt de plataforma cruzada y es gratis para Open Source!

ACTUALIZACIÓN Acabo de hacer un análisis más profundo sobre eso y realmente me gusta esta solución:

Pros:

  • Gratis para Open Source !!! Incluso el cliente es de código abierto: https://github.com/updatenode/unclient
  • El cliente ya está localizado en varios idiomas
  • Muy flexible en términos de actualizaciones. Incluso puede actualizar solo no binarios.
  • Proporciona, además, una forma de mostrar mensajes a través del cliente.
  • Binarios e instaladores listos para usar para todas las distribuciones comunes de Linux, solo binario de Windows, además de un instalador y una solución para Mac (que no he probado, ya que no tengo una Mac)
  • El servicio web fácil de usar, las buenas estadísticas y la verificación de actualizaciones se integran en pocos minutos

Contras:

  • Me falta una administración multiusuario en el servicio en línea. Tal vez lo harán en el futuro. Definitivamente lo recomendaré en su portal de comentarios.
  • El cliente es solo un cliente de GUI, por lo que deberá reducirlo para que se ejecute sin una interfaz gráfica de usuario GUI (tal vez solo sea necesario para personas como yo ;-))

Entonces, en resumen, como esta solución es bastante nueva, creo que hay mucho potencial aquí. ¡Definitivamente lo usaré en mi proyecto y espero obtener más de ellos! ¡Pulgares hacia arriba!


Te sugiero que leas el plugin y cómo crearlo y usarlo. Si la arquitectura de su aplicación es modular y se divide en diferentes complementos. Eche un vistazo a la utilidad Google Auto Update http://code.google.com/p/omaha/ . Usamos esto


Thibault Cuvelier está escribiendo un tutorial (en francés) para desarrollar un actualizador. Sé que las explicaciones están en francés (y todos no entienden francés), pero creo que esto puede ser leído con un traductor web como Google Translate . Con esto, tendrá un actualizador multiplataforma, pero debe escribirlo usted mismo.

Por lo que sé, la única parte del actualizador que se explica en el tutorial es la parte de descarga del archivo. En el caso de que esto pueda ayudarlo, consulte el tutorial, Un updater avec Qt .

Espero que eso ayude.