He estado pensando en rodar mi propio código para habilitar mi aplicación Delphi para actualizar a la perfección como me va a ir para «liberar a menudo, la liberación de los principios de» mentalidad además. Hay varios Delphi soluciones (tanto gratuitos y pagados) por ahí y me gustaría preguntarle si usted ha estado utilizando cualquiera de ellos o simplemente siguió con sus propias soluciones en esta área. Cualquier comentario sobre la auto-actualización tema es bienvenido.

InformationsquelleAutor utku_karatas | 2008-11-10

10 Comentarios

  1. 13

    Años, escribí una herramienta sencilla que se inicia en vez de el programa real, busca las actualizaciones, de las cargas y los instala (si están disponibles), y, finalmente, se inicia la aplicación real.

    Sin embargo, hay problemas con ese enfoque, si tu programa funciona correctamente administrado medio ambiente, donde los usuarios normalmente no tiene acceso de escritura a los directorios del programa. Usted no puede simplemente actualizar su propio programa en este tipo de entornos. Es por eso que una gran cantidad de programas en estos días vienen con su propio actualizador de la herramienta, que puede ser instalado para ejecutar con permisos elevados, por lo que las actualizaciones del programa se puede aplicar incluso a pesar de que sólo los usuarios estándar no hacer nunca inicie sesión en el sistema.

    Usted tiene que decidir si su público objetivo, puede ser asumido para ejecutarse en el poder de usuario o cuentas de administrador, o si usted va a tener que lidiar con los problemas antes mencionados. Con la Vista las cosas se pusieron mucho más difícil ya.

    Con todos estos problemas (red de acceso a través de servidores proxy, la falta de permisos de escritura a los directorios de instalación, la necesidad de actualizar los archivos que el programa de actualización se está utilizando – sólo para nombrar unos pocos) yo no lo intente de nuevo código de esto por mi cuenta. Mucho mejor para comprobar si alguna de las soluciones disponibles hace todo lo que usted necesita.

  2. 18

    Lo que nunca esquema que utilice, puede ser útil saber que en realidad se puede cambiar el nombre de una ejecución .archivo exe. Para cambiar el nombre de archivo, la copia en archivo nuevo funciona bien. Y la próxima vez que alguien inicie el programa que pondrá en marcha una nueva versión. Esto es por supuesto muy útil en un entorno donde muchos de los usuarios de ejecutar el mismo .archivo exe, como en citrix/terminal server/recurso compartido de red de los casos.

    • Es cierto todavía con Win7 y Win10? 😀
  3. 7

    Yo uso el Sinapsis rutinas GetHTTP para devolver un recurso específico, y si lo encuentra, a continuación, comprobar en el sistema local para ver si es necesaria una actualización. Si es así, entonces el recurso me dice en qué página van a lanzar y me tiro la URL en ejecución en shell de manera que los usuarios
    navegador preferido se muestra.

    La mayoría del tiempo la descarga es un programa de instalación creado por InnoSetup la que se actualiza el sistema de los usuarios y la base de datos a la versión más reciente. Cuando un nuevo «pagado» la actualización es necesario, que luego enviar al usuario a la compra «actualización» del formulario. Mis recursos en la web son las páginas ASP, por lo que puedo redirigir a un recurso diferente basada en los clientes el número de versión.

    Para la aplicación principal (nuestra aplicación tiene un servidor y un cliente de la pieza) tengo un cargador en la que se comprobará el servidor para ver si la versión del archivo de cliente en el servidor es diferente de la versión en el cliente…si es así, le pregunta al usuario si desea actualizar el usuario/revertir. Elegimos para pedir al usuario como a veces un error accidental puede hacer en el sistema y el usuario tiene que degradar/sólo la actualización de máquinas específicas para ayudar a solucionar. Mantener un registro de base de datos con la versión mínima requerida que se actualiza a través de la revisión de base de datos, por lo que si una versión debe ser retirado, a continuación, el registro se actualiza en consecuencia.

  4. 6

    He creado mi propia solución basada en la Indy para descargar y http://sourceforge.net/projects/makeupdate/ para el archivo de la aplicación de parches.
    Antes de que yo la he utilizado y probado varias herramientas comerciales, pero nadie estaba haciendo exactamente lo que yo necesitaba.

  5. 6

    Yo uso TmxWebUpdate. Es gratis, sencillo y le da un buen control sobre el proceso. Yo en realidad TMS Componente Pack con TWebUpdate, pero nunca encontró realmente una buena razón para cambiar.

    Edit: Link actualizado

  6. 5

    Desarrollamos nuestro propio bien. Su realidad no es demasiado difícil.

    Nuestro proceso es algo como:

    • Cuando la principal aplicación se inicia, comprueba (utilizando funcs de la sinapsis de la biblioteca) si hay una actualización disponible (suponiendo que su configurado para comprobar, por supuesto).

    • Si es así, se notifica al usuario y askes si se desea actualizar.

    • Si lo hacen, se lanza una actualización .exe, y se cierra la aplicación principal.

    • El actualizador exe descarga los nuevos ficheros basado en el contenido de un archivo de texto recupera, keepiing los archivos en la memoria.

    • Cuando la actualización se realiza la descarga de todo correctamente, a continuación, guarda los archivos descargados en el disco, copia de seguridad de los archivos que sustituye. De esta forma si la descarga se pone interrumpe, no terminan con la mitad de los archivos instalados.

    • Finalmente, se inicia la aplicación principal de nuevo, y se cierra en sí mismo.

    El truco w/Vista es que usted necesita para tener una entrada en la actualización del programa de manifiesto a la fuerza para ejecutar con derechos de administrador.

  7. 4

    Normalmente utilizaremos la herramienta de terceros. Pero en algunas situaciones no era utilizable por lo que he creado una propia solución, que era bastante estándar:

    • Obtener xml (o cualquier otro formato) con la actualización de la información.
    • Si los archivos más recientes se publican, descargar e instalar ellos.
  8. 4

    Yo uso TWebUpdate . Funciona bien y tiene un montón de opciones interesantes, pero la documentación no es tan grande y me hizo chocar con un par de problemas – por lo que me descarga un instalador completo, en lugar de sólo los archivos…

    Voy a mantener un ojo en esta pregunta, por cierto…

    • Yo uso TWebUpdate, demasiado. stg dice que todo funciona, pero el docs podría ser MUCHO mejor. El soporte en línea a través de sus grupos de noticias y correo electrónico de soporte es bueno, sin embargo. Es lo suficientemente barato como para que usted puede permitirse el lujo de probarlo y ver si es lo suficientemente bueno mientras estás añadiendo otras funcionalidades.
  9. 4

    Utilizamos nuestra propia solución que sigue estos pasos:

    1. Aplicación se conecta a http de recursos y descargas de información de archivo (ini archivo de texto) a la memoria, comprueba el número de versión de la versión más reciente.
    2. Si la versión más reciente disponible, descargas de aplicaciones comprimido paquete binario a exe ubicación.
    3. Cuando la descarga haya terminado, se solicita al usuario que reinicie la aplicación.
    4. Al inicio, la aplicación comprueba la presencia de paquete de actualización
    5. Aplicación extrae el contenido del paquete (normalmente una nueva aplicación exe, pero los recursos adicionales es posible, así, por ejemplo, archivos de idioma actualizados, etc.) – para cada archivo se cambia el nombre del actual/edad de archivo a un nombre temporal en primer lugar, a continuación, extrae el archivo nuevo. Si el proceso falla en cualquier punto, la temperatura de los archivos se restauran.
    6. Cuando haya terminado, la aplicación se ejecuta de nuevo exe y se cierra.

    Adicionales No updater es necesario, la aplicación exe puede manejar todo por sí mismo.

    Para el paquete comprimido utilizamos nuestra propia actualización del generador.
    El paquete contiene un índice de los archivos con un hash del archivo, la carpeta de destino (ruta de acceso relativa a la principal exe) y los archivos comprimidos.
    Durante la actualización se compara el hash almacenado con el archivo extraído para detectar corupted archivos.

    Con Vista veo dos soluciones para habilitar las Cuentas de Usuario Estándar a la realidad de la actualización de las aplicaciones de los archivos:

    1. Configurar su configuración para cambiar los permisos de los programas directorio de instalación. De esta manera los archivos en «C:\Program Files (x86)\Su Empresa\App Que» puede ser modificado en las Cuentas con derechos limitados.

      Código de ejemplo para InnoSetup sería:

      [Dirs]
      Name: "{app}"; Permissions: users-modify
    2. Instalar los archivos que va a actualizar a la carpeta ProgramData lugar de que el usuario definidos por el directorio y el uso de este directorio como un reemplazo de la carpeta. Si existen archivos en ProgramData, el uso de esos, más de verificación en install dir.

      InnoSetup código:

      [Files]
      Source: "C:\Your Project\YourApp.exe"; DestDir: "{commonappdata}\Company Name\App Name\"; 
    • Sólo para tu información, Inno configuraciones tienen una opción de línea de comandos /DIR=»<camino>» que puede ser usado para reemplazar el DestDir – puedo usar esto cuando ejecuto un descargar Inno setup y me reemplazar <camino> con la carpeta donde la aplicación está instalada.
    • Dando a los usuarios derechos para modificar archivos en «Archivos de Programa» dir (o subcarpetas) es un MUY GRANDE PROBLEMA de SEGURIDAD!!! Si el usuario se infecta de virus en nombre de el usuario puede modificar el código del programa!
    • Es mejor para: 1) crear un usuario local con una contraseña compleja, dedicado a la actualización (sólo su updater debe debe conocer esta contraseña es decir, nadie más debe ser capaz de iniciar sesión con el usuario!) ; 2) Dar a este usuario derechos a modificar el contenido de la carpeta del programa; 2) crear updater como un servicio; 3) establecer el servicio se Ejecuta Como el usuario dedicado;
    • Yo estaría muy preocupado si puedo instalar un programa que crea un nuevo usuario en mi equipo, y mantener un servicio que se ejecuta en mi ordenador, incluso si usted tiene una «buena intención» sería muy sospechoso, y algunos antivirus será probable que aparezca una enorme cuadro de diálogo de advertencia.
    • Intente instalar, por ejemplo, MS SQL Server. Crea montón de usuarios de sus servicios por las mismas razones similares, usted tiene cuentas de IIS (IWAM/IUSR), UAC toma enfoque similar (excepto token filtrado, es otro tema), etc. La «cuenta de Usuario» es el único verdadero límite de seguridad. Rara vez se utiliza, no la hace sospechosa/malo?
  10. 1

    Mismo como «stg» y «GuyWithDogs», estoy usando TWebUpdate de TMS. Aunque la documentación no es tan grande, no es tan difícil de aprender.

    Con TWebUpdate, usted tiene algunas opciones de lo que el protocolo que use, puede llevarse a cabo a través de HTTP, FTP o acceso a la red.

    Para la capa de comunicación, TWebUpdate utiliza WinInet. En algunas máquinas, el de windows /IE URL de la caché puede ser frustating, así que lo he añadido una rutina para desactivar la actualización automática de la dirección del servidor de caché para asegurarse de que la información recopilada desde el servidor hasta la fecha.

Dejar respuesta

Please enter your comment!
Please enter your name here