Actualmente tenemos 4 instaladores para nuestro software de cliente:Fuerza de sobreescritura de App.config durante la instalación
- ClientSetupTest
- ClientSetupProduction
- ClientUpdateTest
- ClientUpdateProduction
Las únicas diferencias entre ellos son que el programa de instalación contiene los archivos redistribuibles de Crystal Reports, y la actualización no Nuevo Testamento. Prueba y producción solo especifica en qué entorno se ejecutan y la única diferencia es una línea en el archivo Client.exe.config.
Tonto, lo sé, razón por la cual los reemplacé a todos con un instalador después de deshacerme de Crystal Reports. El nuevo instalador escribe el entorno seleccionado en setup.config, al que hace referencia el atributo de archivo (see here).
El atributo "archivo" es nuevo en el archivo de configuración con este nuevo instalador. El problema al que me estoy enfrentando es que si modificamos el archivo Client.exe.config en una instalación anterior, ejecutamos el nuevo instalador, el archivo de configuración nunca se actualiza con el atributo "file".
¿Hay alguna manera de forzarlo a actualizar un archivo? RemovePreviousVersions no funciona exactamente, ya que es un instalador diferente, a menos que esté malinterpretando algo. Mi idea actual, que probablemente funcionará, es agregar código en el método OnBeforeInstall para cambiar el nombre del antiguo Client.exe.config a un archivo de copia de seguridad, por lo que siempre escribirá el nuevo. Parece que debería haber una solución más simple dentro del instalador. ¿Algunas ideas?
EDIT: Cambiar el nombre del archivo de configuración anterior a Client.exe.config.old antes de llamar a base.OnBeforeInstall() no funcionó. Cambió el nombre del archivo, pero nunca escribió el nuevo.
Gracias. Le daré una oportunidad a la opción personalizada. Todavía tendré el problema de no cargar sus configuraciones personalizadas, pero si ha sido modificado, puedo detectarlo y copiar la configuración anterior. –