2009-08-25 27 views
6

Tengo dificultades para encontrar documentación sobre cómo funciona stateSaver/savedState Dictionary para Windows Installer, en las modificaciones de Instalar y Desinstalar, alguien puede ayudarme.¿Cómo funciona SavedState Dictionary en el instalador?

En mis instaladores CustomAction He estado escribiendo en entradas de registro, cada vez que lo hago agrego algunos de sus detalles al stateSaver. Supuse que esto se tuvo en cuenta al desinstalar pero ¿cómo?

Creo que el diccionario de stateSaver se escribe en el archivo cuando se instala, y al desinstalar el contenido de ese archivo, se lee .InstallState y se utiliza para instalar las entradas que encuentra.

Mi problema es que algunas entradas de registro permanecen después de la desinstalación, no sé por qué y mi falta de comprensión de cómo funciona el diccionario no ayuda.

He aquí un ejemplo de lo que la instalación está haciendo

RegistryKey expressionEvaluatorVersionKey = expressionEvaluatorKey.CreateSubKey(packageVersion); 

Esto está creando una sub clave para una clave añadido con el instalador de Windows. ¿Cómo debo eliminar esta Subclave en la desinstalación?

Respuesta

1

No estoy seguro de que installState sea su problema. Este es solo un archivo que contiene varios pares clave-valor, no creo que haya nada inteligente sucediendo allí.

Esto me suena a que el proceso de desinstalación (incorporado) podría estar diciendo "Necesito eliminar esta clave pero no está vacía, por lo tanto, voy a dejarla".

¿Podría posiblemente poner todas las claves de registro/creación de entradas (y por implicación todas las claves/eliminación de entradas) en la acción personalizada dll?

Otro problema que he encontrado con installState, y es por eso que trato de evitarlo, es que no es desconocido que la gente venga y elimine el archivo installState. Dependiendo de cómo haya escrito su acción Desinstalar personalizada, esto podría significar que nunca obtendrá una desinstalación limpia de su programa porque obtendrá excepciones cuando intente leer cosas que espera encontrar en el diccionario que falta.

Dado que parece que ya está utilizando un dll de acción personalizado para hacer este trabajo, espero que mi sugerencia no sea tan onerosa.