2009-07-29 17 views
5

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.

Respuesta

4

Windows Installer won't update a modified file.

archivos Nonversioned son datos de usuario-Si la fecha de modificación es posterior a la fecha de Crear para el archivo en el equipo, no instale el archivo porque se eliminan las personalizaciones de usuario. Si el modificado y las fechas de creación son iguales, instale el archivo. Si la fecha Crear es posterior a la fecha Modificada, el archivo se considera sin modificaciones, instala el archivo.

usted tiene algunas opciones:

  • incluir una acción personalizada que modifica el archivo en su lugar. Esto podría ser un código script o .NET.

  • haga lo que diga, mueva el archivo existente fuera del camino. El instalador no se detendrá en él. Pero debes asegurarte de que suceda en el orden que estás imaginando. Es posible que necesite Orca para averiguar el orden.

  • incluyen una opción personalizada para establecer que la fecha de creación sea "hoy". Esto debería ser realmente simple con una acción personalizada con guiones, usando el Scripting.FileSystemObject. Entonces el instalador de Windows lo sobreescribirá.

+0

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. –

Cuestiones relacionadas