2010-02-25 9 views
5

Tenemos una aplicación .NET que distribuimos a nuestros usuarios a través de un paquete instalador MSI. Tenemos aplicaciones C++ que se ejecutan cada mañana para ver si la copia del usuario de la aplicación está desactualizada, y si es así, desplegamos la nueva MSI e instálala. Si la aplicación se está ejecutando, debemos eliminarla para que podamos realizar la actualización.Windows parece perder la pista de la aplicación .NET

Nuestro problema es que de vez en cuando, que parezca como ventanas "pierde" nuestra aplicación. No informará que el proceso se está ejecutando, aunque sí lo está. Nos permitirá sobrescribir, o incluso eliminar, el archivo ejecutable en uso sin quitar la aplicación.

Tal vez esto es algo que es común - pero no podemos averiguar lo que está pasando! ¿Alguien tiene alguna idea de esta situación?

Parece una copia temporal de nuestra aplicación es cada vez creado, y el programa se está RAN de eso. Pero si ese es el caso, ¿por qué no sucede todo el tiempo?

EDIT: En nuestro programa, estamos utilizando la función "EnumProcesses" de Platform SDK, PSAPI.dll, para enumerar todos los procesos en ejecución.

+0

¿Qué se utiliza para detectar si la aplicación se está ejecutando? –

+3

dice que no se está ejecutando * y * permite sobrescribir los ejecutables? Hay una explicación simple para eso: no se está ejecutando. –

+0

No sé lo que hace tu aplicación, pero parece que ClickOnce sería una solución más limpia. – Walter

Respuesta

2

Podría ser que, o bien la secuencia de comandos o la aplicación se ejecuta como un programa de 64 bits, y el otro como un programa de 32 bits? Si es así, entonces, en máquinas de 64 bits, la verificación de actualización podría estar buscando en una ubicación incorrecta para una aplicación existente y, por lo tanto, informando que falta.

+0

Mirando esto, parece prometedor ... La aplicación es de 32 bits, no estoy seguro acerca de la secuencia de comandos de actualización todavía. Pero, ¿esto también explicaría de alguna manera poder anular el ejecutable? – Matt

+0

Esto no es el caso, pero gracias por la sugerencia. – Matt

0

¿Qué mecanismo está utilizando para verificar si el proceso se está ejecutando o no?

Trate de usar algo como explorador de proceso para ver qué camino la imagen ejecutable se carga desde - que debe aparecer en la sección de módulos.

+0

Ver la edición en mi pregunta original para el mecanismo de enumeración de procesos. No pensé en usar Process Explorer, pero esa es una buena idea. Desafortunadamente no podemos recrear esto bajo demanda, pero lo tendré en cuenta cuando ocurra nuevamente. – Matt

Cuestiones relacionadas