2009-02-04 6 views
5

Soy un desarrollador que necesita munición.Si el usuario desinstala su programa, ¿qué hace con los datos del usuario?

Si el usuario elige desinstalar su programa, ¿qué hace con los datos que su programa mantuvo en HKEY_CURRENT_USER y otras partes del perfil de usuario?

El programa almacena datos de usuario (registros, etc.) en las carpetas de usuario. El cliente quiere una desinstalación para eliminar todos esos datos ... para todos los usuarios. Al mismo tiempo, un usuario común no administrador debería poder realizar la desinstalación.

No he podido encontrar un documento técnico, documentación u otra cosa que diga que no se debe hacer. El cierre es la publicación de Raymond Chen: http://blogs.msdn.com/oldnewthing/archive/2007/09/17/4948130.aspx

Pero una publicación de blog es munición débil.

Alternativa: Cree% SYSTEMDRIVE% \ FooProgramData durante la instalación. Todos los usuarios escriben en esta carpeta. Esto es feo, lo sé. Pero esta es la única forma en que se me ocurre que puede satisfacer el requisito de "al desinstalar todos los archivos que deben ser eliminados".

¿Pensamientos? Necesito una mejor alternativa (si existe) o un documento técnico sólido, la documentación o el requisito de logotipo que dice que las desinstalaciones no deben eliminar los datos del usuario.

Respuesta

3

"Al mismo tiempo, un usuario común que no sea administrador debería poder realizar la desinstalación".

Una cuenta que no es administrador nunca debe (y nunca debe ser capaz de) alterar los datos de otros usuarios.

Lo máximo que puede hacer en ese caso es borrar los datos del usuario actual, e incluso entonces debe solicitar o dar una advertencia.

Ir a Raymond, que sólo puede ser un blog, pero Raymond podría considerarse sin blogger ordinaria :)

EDIT: acabo de encontrar http://msdn.microsoft.com/en-us/library/bb204770.aspx#uninstall_clean pero no dice nada explícito acerca de los datos del usuario

+1

Un usuario que no sea administrador no debería poder desinstalar una instalación de todo el sistema tampoco. – Svante

0

Deseo nunca elimine los datos de usuario y/o configuración al desinstalar. Si el usuario realmente quiere que se vaya todo, debería hacerlo ella misma.

2

desinstala debe eliminar todos los datos del cliente, excepto cuando el cliente no quiere que :)

O, dicho de otra manera, un desinstalador genérico debe dar al usuario la posibilidad de elegir si borrar los datos o no.

En su caso, donde tiene un cliente que desea específicamente que se eliminen los datos, supongo que eso es lo que tendrá que hacer, pero no hay una manera clara de hacerlo si la desinstalación va a ser dirigido por un no administrador a menos que haga lo que sugiere y almacene los datos en algún lugar donde cada usuario tenga acceso completo al sistema de archivos.

2

No conozco las especificidades de Windows, pero como usuario me gustaría que mis datos no se pierdan si desinstalo un software. Algunos argumentos son:

  • Otros programas pueden ser capaces de manejar los mismos datos
  • pude más tarde cambiar de opinión y volver a instalar el software
  • Otras personas podrían necesitar los datos, que pude enviarlas por correo
+1

No quiero todos los programas que instalé hace dos semanas hace tres años para dejar sus archivos de configuración por ahí. La desinstalación siempre debe tener la opción de eliminación completa. – Svante

+0

@Svante Pero debería ser una opción, no forzada tampoco. Esto podría ser un problema si una versión más reciente se instala más tarde cuando el formato de configuración ha cambiado y la compatibilidad con versiones anteriores no se ha tratado. El nuevo instalador debe eliminar la configuración si está en un formato incompatible. – LJNielsenDk

2

La eliminación de todos los datos por usuario debe ser un proceso separado para la desinstalación.

Mi recomendación (y lo que hacemos) sería crear una utilidad de "limpieza" separada que debe ejecutarse como administrador y que enumerará a través de los perfiles la eliminación de archivos de usuario adicionales. Opcionalmente, también podría enumerar las colmenas de registro de usuarios y eliminar claves de registro adicionales, etc. Uno de nuestros clientes tiene sus propios scripts personalizados que hacen exactamente eso.

A continuación, proporcionaría al cliente esta herramienta de limpieza y diría después de la desinstalación, si desea eliminar todos los datos de usuario, utilice esta opción.

considerar los siguientes casos

  • cliente desinstala antes de instalar una nueva versión
  • actualizaciones importantes (que desinstalar la versión antigua por lo que necesita ser consciente de esto)
  • desinstalación accidental por una usuario que no debería haberlo hecho pero que tenía la capacidad de hacerlo

La forma más limpia de eliminar estos datos para todos los usuarios que puedo pensar sería tomar ventaja de Active Setup y usar esto para activar un script por usuario que se ejecuta la próxima vez que cada usuario inicie sesión. Los datos no se borrarán durante la desinstalación, sino en el próximo inicio de sesión. Y dejará unas cuantas entradas de registro mintiendo, sin embargo, sería menos probable que cause corrupción que enumerar los perfiles de usuario.

0

Sé que llegué unos años tarde a esta fiesta, pero como estoy buscando una respuesta para esto ahora mismo, me encontré con el siguiente artículo nuevo de MSDN: http://msdn.microsoft.com/en-us/library/windows/apps/jj553522.aspx.

Se relaciona con las aplicaciones Metro Style, pero probablemente sea relevante para otros tipos de aplicaciones. Su explicación ofrece una distinción muy necesaria entre los diferentes tipos de datos de usuario y puede ayudar a un desarrollador a decidir si eliminar un archivo o no. Sin esta distinción, es comprensible que no hay tales opiniones diferentes sobre si debe o no eliminar los archivos durante la desinstalación:

Hay dos tipos de datos que las aplicaciones con frecuencia administran o interactúan con:

App datos

Datos que la aplicación crea y administra. Es mutable datos específicos para las funciones internas o la configuración de una aplicación particular . Incluye el estado del tiempo de ejecución, las preferencias del usuario, el contenido de referencia (como las definiciones de diccionario en una aplicación de diccionario) y otras configuraciones. La información de la aplicación está ligada a la existencia de la aplicación y es solo significativa para esa aplicación.

datos de usuario

de datos que crea el usuario y administra cuando se utiliza una aplicación. Es incluye documentos o archivos multimedia, transcripciones de correo electrónico o comunicación, o registros de bases de datos que contienen contenido creado por el usuario. Tenga en cuenta que las preferencias seleccionadas por el usuario o las opciones de configuración de la aplicación se consideran datos de la aplicación , no datos del usuario. Los datos de usuario son útiles independientemente de que una sola aplicación pueda ser útil o significativa para más de una aplicación. A menudo, esto es datos que el usuario desea manipular o transmitir como una entidad independiente de la aplicación en sí, como un documento.

Tenga en cuenta las oraciones que se muestran aquí en negrita y cursiva. Si los archivos en cuestión carecen de sentido sin la aplicación, si contienen preferencias de usuario para esa aplicación (como user.config), entonces no se deben considerar datos de usuario aunque puedan estar ubicados en un directorio de datos de usuario. Se debe considerar que pertenece a la aplicación y se eliminará en la desinstalación.

Dicho esto, ¡todavía estoy buscando maneras simples de hacer esto para otros usuarios que el usuario actual! Estoy considerando mover todos esos datos en los directorios de los datos de las aplicaciones para que pueda eliminarlos más fácilmente y sin tener que meterme en los almacenes de datos de usuario de los usuarios individuales.

+0

Acabo de darme cuenta de un error con mi último comentario. Un usuario normal no elevado no podrá escribir en el directorio de datos de la aplicación, por lo que los datos deberán permanecer en los datos del usuario. Lo que significa que el problema aún no está resuelto. –

0

Mi reciente "pensamiento inteligente" aparece en una recomendación para crear el archivo "readme.txt" en la carpeta del usuario correspondiente cuando se ejecuta el programa por primera vez. El archivo debe contener instrucciones de qué archivos son y también un descargo de responsabilidad con 'feel free with clean-up this folder' :-)

Solo para aclarar la pregunta, he creado una más, específicamente relacionada con el logotipo de Windows certificación: Windows Logo clean uninstall.

He planteado un viejo dilema, pero quiero saber qué opción recomienda Microsoft.

Cuestiones relacionadas