Pregunta

Estoy creando un proyecto de instalador en mi solución utilizando WIX 3.8. Como parte de esta instalación, creo algunas condiciones de lanzamiento, una de las cuales está comprobando que Microsoft .NET Framework 4.5.1 está instalado.

Para hacer esto, quiero usar algunas de las propiedades en el Lib de WIXNETFXExtension, que parecen funcionar bien para las versiones anteriores del Framework .NET. Hay un ejemplo de cómo hacer esto en http://wixolset.org /documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html Esto no funciona para .NET 4.5.1 Sin embargo, ya que no hay una propiedad NetFrameWork451 para verificar.

Mirando la fuente para el módulo netfx451.wxs ( http://wix.codeplex.com/sourcecontrol/latest#src/ext/netfxextension/wixlib/netfx451.wxs ) Parece que no hay una propiedad separada para usar para .NET 4.5.1, sino También utiliza el mismo NetFrameWork45. Como lo entiendo, V4.5.1 es una actualización en el lugar para V4.5, por lo que usa las mismas claves de registro (creo). De todos modos, en ese módulo, simplemente verifican el número de versión devuelto desde NetFrame45 de la siguiente manera:

DetectCondition="NETFRAMEWORK45 >= $(var.NetFx451MinRelease)"

Así que asumí que podría escribir una condición como la siguiente:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
       <![CDATA[Installed OR (NETFRAMEWORK45 >= 378675)]]>
    </Condition>

Pero, esto devolvió el mensaje de error en una máquina que conozco tiene instalado .NET Framework 4.5.1. Así que creé una condición como esta, así que podría ver el número de versión que se devuelve del registro:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message ="[NETFRAMEWORK45]">0</Condition>

Esto muestra un cuadro de mensaje con el siguiente texto: # 378758, por lo que sé que el valor en el registro es correcto.

Así que estoy un poco confundido por qué falló mi condición. ¿Hay algo obvio que me falta aquí, o hay alguna otra forma de comparar ese valor en el elemento de la condición?

Aquí está la solución para incluir el símbolo de hash según lo sugerido por PHILDW:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
      <![CDATA[Installed OR (NETFRAMEWORK45 >= "#378675")]]>
    </Condition>

¿Fue útil?

Solución

Estás incluyendo ese # en la comparación, eso no va a ayudar.¿Ha intentado incluir el # en su comparación de CDATA?

Asumiría que cuando los ejemplos de código postal de Microsoft Posts de Microsoft se detectan para detectar versiones de marco, no se puede realizar con un registro de registro simple en un archivo MSI.

http://blogs.msdn.com/B / Astebner / Archivo / 2013/10/13/10457758.aspx

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