una plantillas editar datos conectar como code blog wix major-upgrade

plantillas - Mayor actualización de WiX! Necesita diferentes comportamientos para diferentes componentes



wix login (2)

El problema es que settings.xml no debe instalarse en primer lugar, lo que realmente desea hacer es instalar algo así como un ''defaultSettings.xml'' y tener configuraciones editables por el usuario en una ubicación separada, copiando el valor predeterminado para el usuario / configuración del sistema en un paso de configuración posterior a la instalación o en la primera ejecución. Si el usuario modifica el archivo y ejecuta una "reparación", de todos modos se sobrescribirá, este es el comportamiento previsto de Windows Installer.

Si realmente desea que Windows Installer "deje el archivo solo", necesitará un componente no administrado, es decir, un componente con un GUID vacío. Como...

<Component Id="Settings" Guid="" NeverOverwrite="yes"> <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="//fileserver/Release/Pathways/Dependencies/Settings/settings.xml" Vital="yes" /> </Component>

¡Bueno! Finalmente, identifiqué más de cerca el problema que estoy teniendo. En mi instalador, intentaba hacer que un archivo de configuración permaneciera INTACTO en una actualización importante. Finalmente conseguí que esto funcionara con la sugerencia de establecer

<InstallExecuteSequence> <RemoveExistingProducts After="InstallFinalize" /> </InstallExecuteSequence>

Esto tiene éxito al forzar a este componente a abandonar el original, no reemplazándolo si existe:

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes"> <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="//fileserver/Release/Pathways/Dependencies/Settings/settings.xml" Vital="yes" /> </Component>

¡SIN EMBARGO! ¡Esto es un problema! Tengo otro componente en la lista aquí:

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D" KeyPath="yes"> <File Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="//fileserver/Shared/Databases/Pathways/SystemDBs/Pathways.mdf" Vital="yes"/> <File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="//fileserver/Shared/Databases/Pathways/SystemDBs/Pathways.ldf" Vital="yes"/> </Component>

Y este componente DEBE SER REEMPLAZADO en una actualización importante. Solo puedo lograr esto hasta ahora estableciendo

<RemoveExistingProducts After="InstallInitialize" />

ESTO ROMPE LA PRIMERA FUNCIONALIDAD QUE NECESITO CON EL ARCHIVO DE AJUSTES.

¿CÓMO PUEDO HACER AMBOS?