Hola Denis,
Al ejecutarse el programa Phyloboite.exe, se inicia el proceso _Phylo00.exe. Puedo eliminar ambos procesos eliminando el proceso hijo _Phylo00.exe, ya sea mediante el símbolo del sistema o en el intérprete de línea de comandos de PyScripter con killalltasks. (Para ello, debo usar el Administrador de tareas, minimizar el proceso que, una vez iniciado, ocupa toda la pantalla y no una ventana, y luego iniciar el símbolo del sistema o PyScripter).
El problema principal es que la aplicación portátil que quiero implementar (Phyloboite.exe) requiere privilegios de administrador para ejecutarse. Para solucionarlo, creé una clave de registro en la función install() para que todos los usuarios puedan ejecutar la aplicación con privilegios de administrador y en modo de compatibilidad con Windows XP SP3
Código: Seleccionar todo
registry_setstring(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers","C:\AppsPortables\Phyloboite\Phyloboite.exe","~ RUNASADMIN WINXPSP3 RUNASINVOKER", type=REG_SZ)
El problema es que, a pesar de esto, una vez que la aplicación se implementa en las estaciones de trabajo, en realidad es necesario abrir la aplicación una vez con una cuenta de administrador antes de que los usuarios puedan iniciar la aplicación con derechos de administrador.
Para evitar este problema con el Control de Cuentas de Usuario (UAC), intenté abrir y cerrar la aplicación durante la instalación. Tras varios intentos, y debido a la inoperancia de `killalltasks` en `install()`, creé un archivo ejecutable (a partir de un archivo .bat) que realiza esta acción y se inicia durante la instalación (dentro de la función `install()`). Las pruebas de instalación/desinstalación con PyScripter no muestran problemas particulares; la aplicación se abre durante unos segundos (3), se cierra y la instalación se completa. Sin embargo, tras una prueba de implementación real con las máquinas apagadas, la instalación de la aplicación no se completa y parece ejecutarse indefinidamente.
¿Tiene alguna solución a este problema de una aplicación portátil que requiere derechos de administrador para ejecutarse?
ps1: Para su información, el archivo .bat desde el cual se crea el archivo .exe contiene los siguientes comandos:
Código: Seleccionar todo
start C:\AppsPortables\Phyloboite\Phyloboite.exe && timeout /t 3 && taskkill /f /im "_Phylo00.exe"
(ps2: otra cosa curiosa es que la función killalltasks efectivamente mata el proceso _Phylo00.exe que se está ejecutando durante la desinstalación cuando se llama a la función uninstall()).
gracias de antemano