visual - Evaluación de la propiedad Wix
wix visual studio 2012 (1)
Debido a que la búsqueda ocurre muy temprano en la instalación, la razón más probable es que INSTALLDIR no tenga ningún valor. No ha dicho si está haciendo una instalación nueva o una actualización, por lo que no está claro de dónde cree que va a obtener su valor.
También me gustaría señalar que el propósito de ese código fuente es aparentemente evitar la instalación de un archivo si ya existe uno, así que:
Si INSTALLDIR resulta ser la carpeta de la aplicación (generalmente archivos de programa) donde están instalados sus archivos, los usuarios generalmente pueden cambiar esta ubicación, por lo que no está claro que el archivo va a estar donde usted espera que esté.
Las reglas de sobrescritura de archivos evitan que los archivos entrantes sobrescriban archivos de datos modificados (modificar fecha> fecha de creación) por lo que si ese archivo de configuración se ha modificado, no se sobrescribirá y no será necesario realizar la verificación.
En su comentario, dice "Mi instalador debe crear el archivo config.xml solo si no hay tal archivo en el directorio de destino (instalación). Si dicho archivo existe, mi instalador debe crear un archivo con el nombre template.xml". Creo que quizás la forma más fácil de hacerlo es en la aplicación una vez finalizada la instalación o, posiblemente, en una acción personalizada después de que se hayan instalado todos los archivos. Parece que no hay una buena forma de hacerlo antes de la instalación porque INSTALLDIR es impredecible. He visto este tipo de problema resuelto instalando los archivos XML para (por ejemplo) Datos de la aplicación del usuario, y después de que los archivos están instalados, la aplicación o una acción personalizada puede ver qué archivos hay (o no) y obtenerlos del usuario. Datos de la aplicación.
Cómo utilizar el resultado de FileSearch
como condición en la sección Component
. Quiero obtener algo como esto:
<Property Id=/"CONFIG_XML_EXISTS/">
<DirectorySearch Id="CheckForConfigXml" Path="[INSTALLDIR]/">''
<FileSearch Id="ConfigXmlSearch" Name="config.xml" />
</DirectorySearch>
</Property>
...
<Component Id="c_DefaultConfig.xml" Guid="{1AAB0AFD-B763-4A55-8585-B0AD4D8CE23C}">
<File Id="f_default_config.xml"
Name="default-config.xml"
Source="$(var.SourceRoot)/config.xml"/>
<Condition>CONFIG_XML_EXISTS</Condition>
</Component>
No sé por qué, pero la propiedad wix no quiere evaluar CONFIG_XML_EXISTS
.