Tenemos un exe mínimo de "actualización" que verifica las URL de una URL remota, las descarga y reemplaza los archivos en el disco antes de iniciar la aplicación real. Sin embargo, si queremos reemplazar el actualizador EXE entonces AFAIK tenemos dos opciones:Mejor método para implementar el software de actualización automática
1) Shadow Copying Assemblies mediante el cual .Net creará una copia sombra del EXE (y los ensamblajes a los que se hace referencia) y cargará esos ensamblajes, de modo que los ensambles de sombras pueden reemplazarse y se usarán cuando la aplicación se lance a continuación.
2) Identifique qué archivos se reemplazan y renómbrelos/muévalos en el disco. Windows parece permitir el cambio de nombre/movimiento de archivos bloqueados, por lo que podemos mover los archivos y copiar en los nuevos conjuntos. De nuevo, en el siguiente lanzamiento de la aplicación lanzaremos los nuevos ensamblajes. Este enfoque se menciona here
¿Este segundo método es un método recomendado? ¿Hay algún inconveniente en este enfoque?
Esta es probablemente la mejor opción, ya que debería ayudar a estandarizar la actualización/degradación del nivel de seguridad que es requerido en Windows Vista y versiones futuras de Windows –
No estamos usando ClickOnce por ahora ya que era más fácil usar el método de copiado de archivo que describí, y también tenemos un proceso de actualización cutomised para una base de datos SQL que se instala junto con la aplicación. Sin embargo, ClickOnce es la solución oficial de Microsoft y en la que analizaremos más con miras a su uso futuro, por lo tanto, estoy eligiendo esta como la respuesta aceptada. Gracias. – redcalx
ClickOnce es una pesadilla porque es inflexible, demasiado complejo, parece no tener una sólida compatibilidad de Microsoft y es muy específico para los escenarios de implementación por usuario. – jpierson