Pregunta

Actualmente tenemos 4 instaladores para nuestro software de cliente:

  • 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. Prueba y producción solo especifica en qué entorno se ejecutan y la única diferencia es que hay una línea en el archivo Client.exe.config.

Tonto, lo sé, por eso 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 ( ver aquí ).

El " archivo " El atributo es nuevo en el archivo de configuración con este nuevo instalador. El problema con el que me encuentro es que si modificamos el archivo Client.exe.config en una instalación anterior, luego ejecutamos el nuevo instalador, el archivo de configuración nunca se actualiza con el archivo "". atributo.

¿Hay alguna forma de obligarlo 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, para que siempre escriba el nuevo. Sin embargo, parece que debería haber una solución más simple dentro del instalador. ¿Alguna idea?

EDITAR : 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.

¿Fue útil?

Solución

Windows Installer no actualizará un archivo modificado .

  

Los archivos no versionados son datos de usuario: si la fecha de modificación es posterior   que la fecha de creación del archivo en la computadora, no instale   el archivo porque las personalizaciones del usuario se eliminarían. Si el modificado   y Crear fechas son las mismas, instale el archivo. Si la fecha de creación   es posterior a la fecha de modificación, el archivo se considera no modificado,   instale el archivo.

Tienes algunas opciones:

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

  • haz lo que dices: quita el archivo existente. El instalador no se detendrá en él. Pero debe asegurarse de que suceda en el orden que está imaginando. Es posible que necesite Orca para resolver el pedido .

  • incluye 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 script, utilizando el Scripting.FileSystemObject . Entonces el instalador de Windows lo sobrescribirá.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top