Pregunta Lanzar mi aplicación usando el método de Windows RunOnce


Estoy ejecutando mi instalador de aplicaciones en el inicio de Windows 7 seguido de un reinicio del sistema solicitado por el instalador. Ahora, para el enfoque estoy escribiendo en la clave de registro RunOnce para que mi instalador se ejecute solo una vez y la entrada se elimine automáticamente después.

Ahora el enfoque anterior funciona bien excepto una cosa: no puedo mostrar el escritorio con este método hasta que la instalación haya finalizado y esté cerrada.

Creo que este comportamiento es el predeterminado para el método RunOnce. Quería confirmar eso y si es necesario, puedo usar el Run en lugar RunOnce clave y eliminar la entrada de allí una vez que mi trabajo esté hecho. ¿Hay alguna otra forma de jugar con RunOnce ¿llave?


1


origen


¿Estás tratando de ejecutar tu instalador silenciosamente, básicamente? ¿Es el instalador un MSI? - Kinnectus
@ BigChris: es el instalador de NSIS. En realidad, es el .NET Framework 4.0 que se instala silenciosamente desde mi instalador y que requiere un reinicio del sistema. Y no puedo ignorar este reinicio ya que mi instalación depende de algunos de los componentes .NET. - hypheni
Pero no ha dicho lo que exactamente quiere ... ¿quiere que no haya ninguna pantalla de su instalador mientras se está ejecutando por completo? - Kinnectus
@ BigChris: Quiero el comportamiento predeterminado de Windows. es decir, el instalador de mi aplicación debería ejecutarse exactamente como cuando hago doble clic en él. Con vista de explorador. Lo que creo que es, RunOnce se acerca de alguna manera al bloqueo del explorador. - hypheni
Posiblemente. Lo que puede intentar es un Scheduled Task. Selecciona el Trigger ser At log on y Any user. En el Settings pestaña establecer la tarea a Delete the task if it is not scheduled to run again y configura el menú desplegable para Immediately. Esto creará una Tarea programada para ejecutarse cuando el siguiente usuario inicie sesión y, debido a que la tarea no está programada para ejecutarse nuevamente, se eliminará inmediatamente, creando efectivamente una tarea única que se ejecutará cuando inicie sesión ... - Kinnectus


Respuestas:


La respuesta es que necesito usar el método RunOnce de HKCU en lugar de HKLM. El orden en que Windows ejecuta las entradas de inicio es:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunServicesOnce

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunServices

<Logon Prompt>

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Run

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run

Carpeta de inicio

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce

Árbitro: INFO: Run, RunOnce, RunServices, RunServicesOnce y Startup


1