WiX: Prévenir les 32 bits de l'installateur de s'exécuter sur Windows 64 bits
En raison de la confusion de l'utilisateur, notre application nécessite de séparer les programmes d'installation pour les versions 32 bits et les versions 64 bits de Windows. Tandis que la version 32 bits de programme d'installation s'exécute correctement sur win64, il a le potentiel pour créer de l'appui des maux de tête et nous tenons à empêcher que cela se produise.
Je veux éviter que le 32 bits MSI programme d'installation à partir de l'exécution sur Windows 64 bits machines. À cette fin, j'ai la condition suivante:
<Condition Message="You are attempting to run the 32-bit installer on a 64-bit version of Windows.">
<![CDATA[Msix64 AND (NOT Win64)]]>
</Condition>
Avec le Win64 définie comme ceci:
<?if $(var.Platform) = "x64"?>
<?define PlatformString = "64-bit"?>
<?define Win64 ?>
<?else?>
<?define PlatformString = "32-bit"?>
<?endif?>
Chose est, je ne peux pas obtenir cette case à travailler correctement. Soit il se déclenche tout le temps, ou d'aucun temps. L'objectif est de vérifier la présence de l'exécution msix64
variable contre le au moment de la compilation Win64
variable et renvoie une erreur si elles ne sont pas alignés, mais la logique n'est pas de travail que j'ai l'intention de faire. Quelqu'un a une meilleure solution?
Vous devez vous connecter pour publier un commentaire.
Notamment de l'État de l'élément que dans votre package 32 bits (c'est à dire, à l'aide ?si? préprocesseur déclaration). La Condition serait "PAS Msix64": conditions de Lancement sont des choses qui doivent être vrai, donc si Msix64 est définie, la condition de lancement échoue et cela signifie que c'est un système d'exploitation x64 et un package 32 bits et la bonne chose à faire est de bloquer.
Condition
.Nous utilisons les suivants...
La condition de l'élément fonctionne avec windows installer propriétés qui n'existent lors de l'installation.
Cependant, la définition d'un
Win64
comme wix variable, pas un programme d'installation de windows bien. Wix variables n'existent alors que le programme d'installation est créé. Vous devez faire référence comme$(var.MyWixVariable)
où vous les utilisez, et le wix préprocesseur sera alors de les remplacer par leur valeur définie.Je voudrais essayer ceci à la place:
Si
$(var.Platform)
a le droit de valeur lorsque le programme d'installation est créé, puis ce sera la cause d'une "Win64" la propriété d'être enregistré dans la base de données windows installer (c'est à dire le fichier MSI) et la propriété sera disponible lors de l'installation pour une utilisation dans un élément de condition.<?...?>
) sont conçus pour le préprocesseur dans candle.exe. Light.exe devriez ne jamais les voir si vous êtes à l'aide de wix correctement.Ajouter cette condition
Vous pouvez créer un programme d'installation 32 bits composant et 64 bits de la composante et de mettre ces deux conditions dans les composantes respectives
ici est une référence, j'ai utilisé
http://blogs.msdn.com/david.wang/archive/2006/03/26/HOWTO-Detect-Process-Bitness.aspx