2011-07-08 17 views
6

Tengo un instalador que despliega un sitio web como un sitio IIS SSL o no SSL dependiendo de si una propiedad está configurada o no. Se me ha pedido que agregue la opción para configurar el puerto, lo cual no es un problema, pero me gustaría configurar el puerto a los valores predeterminados (80 o 443) si el valor no está establecido.Establecer condicionalmente la propiedad de WiX individual a diferentes valores

he intentado algo así como:

<SetProperty Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty> 
    <SetProperty Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty> 

Pero, obviamente, WiX se queja de la acción personalizada que tiene el SetOUTPORT ID duplicado.

¿Estoy saltando por otro agujero de conejo en forma de WiX aquí?

Respuesta

6

SetProperty ahora admite el atributo Acción para permitirle especificar ID de acciones personalizadas cuando desee tener múltiples elementos SetProperty para la misma propiedad con diferentes condiciones.

+0

Perfect @Bob. Cuando vi por primera vez "CustomAction" pensé que iba a tener que hacer todo en código administrado. –

+3

Esto no parece ser válido (? Longer) http://wix.sourceforge.net/manual-wix3/wix_xsd_setproperty.htm –

13

La respuesta aceptada no es correcta en la necesidad de convertir a la escritura completa de la acción personalizada y la secuencia (¿ya no?).

De acuerdo con la documentación para WiX   3, SetProperty Element

Sin establecer SetProperty \ @Action

<SetProperty Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty> 
<SetProperty Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty> 

Duplicate symbol 'CustomAction:SetInstallFiles' found 

Acción. Cadena. Por defecto, la acción es "Establecer" + valor del atributo Id. Este atributo opcional puede anular el nombre de la acción en el caso en que varios elementos de SetProperty se dirijan al mismo Id (probablemente con condiciones mutuamente excluyentes).

Lo siguiente funciona sin tener que cambiar para escribir acciones personalizadas.

<SetProperty Action="SetInstallFiles0" Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty> 
<SetProperty Action="SetInstallFiles1" Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty> 

Funciona en WiX 3.7, y no estoy seguro de qué primera versión está disponible.

+1

Sí, SetProperty y SetDirectory se han mejorado para admitir este escenario. –

+0

@Greg, creo que tiene sentido editar la respuesta original con esta información para mantener la coherencia. –

Cuestiones relacionadas