No soy un gran admirador de ClickOnce. Me gusta el concepto, pero no la implementación específica.
La forma en que he hecho un sistema de actualización de aplicaciones en el pasado es comprimir todos los archivos de la aplicación en un archivo contenedor y ponerlo en mi servidor web. Para facilitar las cosas, automaticé la creación del archivo contenedor. En el servidor web, tengo un archivo de información de versión que enumera la versión actual y la URL del contenedor como esta: 1.0.0.0|http://www.example.com/path/to/container.file
. Para analizar el archivo de información de versión, todo lo que la aplicación necesita hacer es dividir el contenido del archivo utilizando el carácter de tubería '|'. El primer elemento de la matriz será el número de versión y el segundo elemento será la ruta del archivo contenedor.
Al inicio y en un intervalo regular como cada 2 días (en caso de que el usuario deje la aplicación ejecutándose durante un período prolongado), la aplicación verifica el archivo de información de versión en el servidor web y determina si la versión enumerada allí viene después de la versión en ejecución. Si hay una actualización, la aplicación solicita al usuario. Si el usuario desea la actualización, la aplicación descarga el contenedor de la url especificada en el archivo de información de versión y guarda el contenido en la carpeta de la aplicación, renombrando el archivo ejecutable actualmente en xxx.exe.old
para permitir que el nuevo exe se guarde como xxx.exe
. A continuación, la aplicación se reinicia y el nuevo exe elimina xxx.exe.old
.
Cuando desee publicar una nueva versión de su aplicación, todo lo que necesita hacer es incrementar el número de versión de su aplicación, actualizar el archivo de información de versión con el nuevo número de versión y cargar un archivo contenedor actualizado en su sitio web servidor.
+1 lo he hecho yo mismo en el pasado y es muy poco intrusivo. – davek