¿Cómo ejecutaría una aplicación desde un recurso compartido de red para poder actualizarla?

¿Cómo ejecutaría una aplicación desde un recurso compartido de red para poder actualizarla?

Tenemos una aplicación de escritorio interna que hemos implementado en un recurso compartido de red. En ese directorio hay subdirectorios para cada versión, es decir, z:\Apps\ApplicationX\1.0 z:\Apps\ApplicationX\2.0 z:\Apps\ApplicationX\2.1

Me gustaría poner un acceso directo en los escritorios de los usuarios que apunte a la versión más reciente de la aplicación. Mi solución actual es colocar la versión actual en un directorio llamado "z:\Apps\ApplicationX\Current" y colocar allí un acceso directo en su escritorio al archivo ejecutable.

El problema es que cuando están ejecutando la aplicación, no puedo actualizarla porque el archivo está bloqueado.

Intenté cambiar el acceso directo para que apunte a un archivo por lotes que copia el archivo localmente y luego lo ejecuta desde allí, pero todos estamos en Windows 7 y UAC está causando problemas al copiar el archivo a la unidad C: donde lo esperaría. Para ser instalado.

Supongo que podría copiar el ejecutable en el disco de inicio del usuario y ejecutarlo desde allí, pero no me gusta la idea de tener un ejecutable en el disco de inicio del usuario. También significa que hay varias copias de la aplicación en la red, lo cual no me gusta.

También pensé que podría tener un acceso directo a un acceso directo y simplemente actualizaría el acceso directo, pero eso tampoco funciona.

Mi solución actual es tener un archivo por lotes que tenga el comando de inicio que apunte a la versión actual y un acceso directo a ese archivo por lotes.

¿Alguien más tiene posibles soluciones?

Respuesta1

Mi método preferido, dos aplicaciones. La aplicación principal ya la tienes. El segundo es un lanzador/actualizador. Haga un acceso directo al iniciador, verifica una configuración (galimatías cifrado, xml, texto sin formato, codificado directamente en el iniciador, lo que sea) para conocer la ruta del ejecutable para iniciar y luego lo inicia. Una vez que se inicia la aplicación principal, el cargador finalizará.

Cada vez que obtiene una nueva versión, actualiza el archivo de configuración del iniciador y los lanzamientos futuros del programa abrirán la nueva versión.

Es el proceso estilo "cargador de arranque". Tenga una pequeña aplicación de asistencia que apunte a la aplicación de tamaño completo. Los clientes inician la pequeña aplicación y luego los dirige a la aplicación completa adecuada.

Puntos de bonificación si tiene su iniciador, verifique las huellas dactilares o firmas de hash en las aplicaciones de tamaño completo para asegurarse de que nadie sea creativo e intente vincularse a otra aplicación desde el iniciador.

Respuesta2

Suena como una aplicación heredada. Lo mejor que puede hacer será no complicarlo demasiado y simplemente programar un tiempo de inactividad para las actualizaciones.

Respuesta3

Estoy de acuerdo con DanBig en que en su situación simple, a menos que desee renovarlo mucho (como sugiere Ruscal, lo cual es una buena idea), simplemente programe una "interrupción" en la que elimine los bloqueos de archivos y reemplace el archivo .exe ( tal vez durante la noche o un fin de semana).

"Me gustaría poner un acceso directo en los escritorios de los usuarios que apunte a la versión más reciente de la aplicación" - OP

En cuanto a colocarlos en el escritorio, ¿por qué no hacer que su acceso directo apunte a z:\Apps\ApplicationX\ y colocar el EXE actual allí? Luego, tenga subcarpetas para revisiones/versiones anteriores según sea necesario, como z:\Apps\ApplicationX\revisions. De esta manera, el acceso directo del cliente nunca cambia y, durante las actualizaciones, simplemente mueve el exe existente a una carpeta rev# y coloca el .exe nuevo/actualizado en la carpeta z:\Apps\ApplicationX\.

Respuesta4

Puede utilizar un servidor Samba que se ejecute en Linux. Cuando necesite actualizar la aplicación, simplemente cambie el nombre de la carpeta "actual" y cree una nueva con el nombre "actual". El recurso compartido debe ser de solo lectura.

En Linux (Unix), se permite cambiar el nombre o eliminar un archivo y los procesos que tengan los archivos abiertos podrán usar la versión anterior hasta que se cierre el descriptor del archivo.

información relacionada