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?
A menos que alguien no esté de acuerdo, he decidido que lo que quiero hacer NO es posible. ¡Estoy intentando un truco feo utilizando dos acciones personalizadas!