Debido a la confusión del usuario, nuestra aplicación requiere instaladores separados para las versiones de Windows de 32 y 64 bits. Si bien el instalador de 32 bits funciona bien en win64, tiene el potencial de crear dolores de cabeza de soporte y nos gustaría evitar que esto suceda.WiX: Impida que el instalador de 32 bits se ejecute en Windows de 64 bits
Quiero evitar que el instalador MSI de 32 bits se ejecute en máquinas Windows de 64 bits. A tal fin tengo la siguiente condición:
<Condition Message="You are attempting to run the 32-bit installer on a 64-bit version of Windows.">
<![CDATA[Msix64 AND (NOT Win64)]]>
</Condition>
Con el Win64 define así:
<?if $(var.Platform) = "x64"?>
<?define PlatformString = "64-bit"?>
<?define Win64 ?>
<?else?>
<?define PlatformString = "32-bit"?>
<?endif?>
La cosa es que no puedo conseguir este control funcione bien. O dispara todo el tiempo, o nada de tiempo. El objetivo es comprobar la presencia de la variable msix64
en tiempo de ejecución contra la variable Win64
en tiempo de compilación y lanzar un error si no se alinean, pero la lógica no funciona como yo lo intento. ¿Alguien ha encontrado una mejor solución?
Esto terminó haciendo el truco. Mi error fue obtener la lógica hacia atrás para 'Condition'. –
Msix64 requiere Windows Installer 3.1 que no está presente en XP de forma predeterminada (consulte http://msdn.microsoft.com/en-us/library/aa370522(v=VS.85).aspx) –