with visual toolset studio how create installer wix windows-installer

installer - toolset - wix visual studio 2015



Mejora de Wix major (3)

¿Cómo uso WIX para evitar sobrescribir un archivo de configuración durante una "Actualización importante"?

Quiero que el archivo se instale en la instalación inicial, se elimine en la desinstalación y se deje sin cambios en una "Actualización importante".

Gracias


¿Alguna vez quieres que se sobrescriba? Si no es así en casos como este, asigno los archivos de configuración a sus propios componentes y los marque como Nunca sobrescribir . De esta forma, las actualizaciones no sobrescribirán el archivo, pero las desinstalaciones lo eliminarán.

p.ej

<Component Id="myComp" Guid="myguid" NeverOverwrite="yes">


La manera más directa sería programar su RemoveExistingProducts después de InstallExecute o InstallFinalize. De esta forma, el archivo de configuración no se elimina y luego se instala de nuevo (como si se programó antes de InstallInitialize). Por supuesto, programar RemoveExistingProduct tan tarde significa que debe tener mucho cuidado con sus Reglas de Componente.

Mi favorito personal es tratar la configuración como "datos de usuario" y no tener instalado el installtouch en absoluto. Envías valores predeterminados con la aplicación, pero el usuario realiza los cambios en su perfil de usuario privado. Lo saca de todo tipo de desagradables problemas de migración que simplemente no se resuelven bien durante la instalación.


Puede usar la propiedad UPGRADINGPRODUCTCODE para verificar si está actualizando. Usamos esto para determinar si debemos ejecutar nuestra acción personalizada de ''limpieza'':

<Custom Action="" After="CleanUpFiles"> <![CDATA[REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE]]> </Custom>

Estoy de acuerdo con Rob, en que la configuración es información del usuario, almacenada en sus carpetas de datos de aplicaciones, y nunca creada por el MSI. En su lugar, está configurado con un valor predeterminado (que almacenamos como configuración predeterminada en los archivos de programas), y la aplicación lo copia por sí mismo. Pero no queremos dejar estas cosas saturando la máquina de un usuario si quieren desinstalar nuestro producto, por lo que creamos un CleanUpFiles que busca en la HD cualquier basura que quede.