2010-03-02 11 views
7

Cuando mi software está instalado, a través de una MSI, crea algunas claves de registro dentro de HKLM. Cuando las personas usan el software, sus preferencias individuales se guardan en HKCU. Cuando se desinstala el software, las claves de registro HKLM y HKCU se eliminan, pero estoy pensando que solo se eliminarán las claves HKCU para el usuario que ejecuta la desinstalación. ¿Es esto correcto? De ser así, ¿cómo me aseguro de que se eliminen las subclaves de HKCU para otras personas que hayan usado mi software en la misma máquina?¿Cómo eliminar las claves de registro HKCU al desinstalar el software?

ACTUALIZACIÓN: Las "preferencias individuales" que se guardan en mi caso no son realmente las configuraciones que el usuario ha elegido, sino más bien los datos que la aplicación ha almacenado mientras se ejecuta para ese usuario. Por lo tanto, no se trata de datos que el usuario quiera conservar. Parece correcto eliminarlo en la desinstalación, ya que no tendrá ningún uso si la aplicación se reinstala. Así que supongo que la mejor sugerencia hasta ahora es Ed's: don't use the registry, aunque eso no soluciona la pregunta original.

Respuesta

2

La respuesta corta es usted no. El instalador se supone que elimina las entradas crea y nada más. Si su aplicación crea configuraciones por usuario en tiempo de ejecución, esas no son propiedad de la rutina de instalación.

Si realmente quieres hacerlo, puedes crear una acción personalizada y forzar la desinstalación para que se ejecute como administrador para que puedas acceder a todas las colmenas de usuario. Tenga cuidado: este es un comportamiento completamente no estándar y puede llevar una cantidad significativa de tiempo & recursos del sistema para montar & desmontar todas las colmenas de usuario. Y si su desinstalador no es cuidadoso, puede dañar cosas en las colmenas de nivel del sistema y hacer que su sistema no se pueda iniciar.

Como menciono en el comentario a la respuesta de sascha, las mejores prácticas de Windows Installer dicen (¿dijo?) Dejar la configuración de usuario personalizada en la desinstalación. De esta forma, si el usuario reinstala su software, su configuración estará disponible.

+0

¿No puedo simplemente recorrer cada uno de los subárboles de HKEY_USERS y eliminar mis datos? ¿O es eso lo que dices que será lento? – Rory

+0

Es peligroso eliminar datos de esta manera en escenarios con perfiles itinerantes. Estoy un poco confundido con los detalles, pero creo que daña las comparaciones de marcas de tiempo y puede hacer que los datos de perfil se pierdan si se selecciona el perfil incorrecto como el ganador de la "fusión". –

+1

OK, reconozca que * no * 'sus datos'. Una vez que está en una sección de registro de usuarios, son los * datos * del usuario. Y sí, cargar y descargar las colmenas de usuario separadas es bastante lento. Y necesita SCRUPULOUSLY no hacer nada con los perfiles de cuenta del sistema, por lo que primero debe identificar los perfiles de usuario regulares. Y como menciona MichaelU, si los perfiles itinerantes están en uso, puede dañar las cosas que no pertenecen a su aplicación (¿realmente desea que un grupo de TI de clientes lo llame con una factura para reconstruir todos sus perfiles de usuario?). ESTA ES UNA MALA IDEA. – DaveE

2

No se puede hacer, solo se eliminan las entradas del usuario actual.

Puede utilizar ActiveSetup para solucionar este problema, sin embargo, está prácticamente indocumentado al margen de ese enlace y no es compatible con Microsoft. Por lo tanto, si lo usa, no confíe en él;)

La idea de no eliminar los datos del usuario durante la desinstalación es un tema bastante controvertido con una historia bastante interesante ... Recuerdo que las versiones anteriores de Office solían guardar documentos debajo del directorio de instalación, el número de quejas que solíamos recibir cuando después de una actualización los usuarios eliminaban la carpeta de Office anterior y perdían sus documentos era enorme. Más recientemente, la queja es que las personas pierden su plantilla personalizada Normal.dot.

Como alguien involucrado con el software comercial, mi opinión es que si la gente confía en su software como parte del flujo de trabajo de su oficina y se toma el tiempo para personalizar la configuración, no elimine la configuración durante la desinstalación.

Desde otro punto de vista, si desinstala un juego que ha perdido horas/días/semanas en juego, ¿le gustaría que se borren sus partidas guardadas? ¿Tus archivos de configuración personalizados? ¿Qué pasa con un juego en una computadora familiar compartida, alguien desinstala un juego para liberar espacio en el disco, sin saber que otro miembro de la familia lo juega regularmente? ¿Desea tratar con ese tipo de quejas de sus clientes?

+0

>> si las personas confían en su software como parte del flujo de trabajo de su oficina y se toman el tiempo para personalizar la configuración, no elimine la configuración durante la desinstalación. << IIRC, ¿era (también era) parte del Windows Installer? Prácticas. – DaveE

+0

@DaveE gracias ... Olvidé dónde lo leí originalmente :) – saschabeaumont

3

Si realmente desea eliminar los datos del usuario, almacene los datos del usuario en el sistema de archivos. En algún lugar como "Documentos y configuración \ nombre de usuario \ Datos de la aplicación \ Su organización \ Su aplicación". Esa información sería trivial para eliminar en la desinstalación, con una entrada en la tabla RemoveFile.

El equipo de desarrollo de Windows Installer se ocupó específicamente de esto en su blog. Ver "Regla 26". http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx

actualización: hace

muchos años me escribió el código que hace lo que usted describe en el registro, y rápidamente llegó a lamentar. Fue un dolor, pero más que eso, tenía un problema relacionado con los privilegios. La versión corta es que el servicio Installer no se ejecuta con todos los privilegios que tiene el administrador. No solo están deshabilitados, están ausentes del token de seguridad del proceso. En particular, esto incluye el privilegio necesario para cargar y descargar colmenas de registro (se_restore_privilege como recuerdo). Eso provocó que el código se rompiera para la instalación y la desinstalación silenciosa, incluso si el usuario invocado era Admin, y no podía simplemente no permitir la instalación y desinstalación silenciosa.

Otro problema que no ha surgido aún es el Directorio Activo. No estoy seguro, pero estoy pensando que lo que usted describa va a tener graves obstáculos adicionales para saltar en un entorno de AD.

En general, intento evitar instalar o desinstalar la colmena HKCU. He descubierto que hacer eso es una fuente constante de dolor significativo para obtener un beneficio mínimo.

Cuestiones relacionadas