2010-04-28 4 views
10

Je travaille sur un projet d'installation Windows. Et maintenant, je veux que le logiciel ne peut être installé sur Windows 7 ou Windows Server 2008 R2 système, j'ai essayé d'utiliser ceci:Comment faire pour vérifier le système est Windows 7 ou Windows Server 2008 R2 dans Wix Installer?

<Condition Message='Windows Server 2008 R2 or Windows 7 is required'>(VersionNT = 600 AND ServicePackLevel = 1) OR VersionNT = 601 </Condition> 

mais il peut encore être installé sur Windows Vista. S'il vous plaît aider!

Merci!

+1

Ici vous avez la page Microsoft sur les versions de Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370556(v=vs.85) .aspx –

Répondre

9

Il suffit de cocher pour VersionNT 601 ou plus récent, Windows 7 et Server 2008 R2 both have the same value.

<Condition Message="Win7 or 2008 R2 required"><![CDATA[Installed OR VersionNT >= 601]]></Condition> 
+0

note supplémentaire: l'affiche originale demandait comment vérifier une version particulière du système d'exploitation - en utilisant l'opérateur "=". C'est une grosse erreur qui ne devrait jamais être faite! à la place, nous devons utiliser l'opérateur "> =". ceci est déjà inclus dans la réponse actuelle de saschabeaumont. Je tiens simplement à souligner que l'exigence énoncée dans la question initiale est en quelque sorte invalide. nous devons éviter de telles erreurs. – Opmet

1

Vista et Server 2008 pre-SP2 ont le même numéro de version majeure. Vous devez également rechercher l'équivalent Wix de 'VER_NT_SERVER' (InstallShield). (Au travail maintenant, ne pas Wix installé ici)

22

Voir here un exemple

<Condition Message='Windows 95'>Version9X = 400</Condition> 
<Condition Message='Windows 95 OSR2.5'>Version9X = 400 AND WindowsBuild = 1111</Condition> 
<Condition Message='Windows 98'>Version9X = 410</Condition> 
<Condition Message='Windows 98 SE'>Version9X = 410 AND WindowsBuild = 2222</Condition> 
<Condition Message='Windows ME'>Version9X = 490</Condition> 
<Condition Message='Windows NT4'>VersionNT = 400</Condition> 
<Condition Message='Windows NT4 SPn'>VersionNT = 400 AND ServicePackLevel = n</Condition> 
<Condition Message='Windows 2000'>VersionNT = 500</Condition> 
<Condition Message='Windows 2000 SPn'>VersionNT = 500 AND ServicePackLevel = n</Condition> 
<Condition Message='Windows XP'>VersionNT = 501</Condition> 
<Condition Message='Windows XP SPn'>VersionNT = 501 AND ServicePackLevel = n</Condition> 
<Condition Message='Windows XP Home SPn'>VersionNT = 501 AND MsiNTSuitePersonal AND ServicePackLevel = n</Condition> 
<Condition Message='Windows Server 2003'>VersionNT = 502</Condition> 
<Condition Message='Windows Vista'>VersionNT = 600</Condition> 
<Condition Message='Windows Vista SP1'>VersionNT = 600 AND ServicePackLevel = 1</Condition> 
<Condition Message='Windows Server 2008'>VersionNT = 600 AND MsiNTProductType = 3</Condition> 
<Condition Message='Windows 7'>VersionNT = 601</Condition> 
<Condition Message='Windows 8'>VersionNT = 602</Condition> 
6

Vous pouvez utiliser la propriété MsiNTProductType pour détecter s'il s'agit d'un os du serveur. En combinaison avec la version NT vérifier, vous pouvez vérifier si vous avez Windows Server 2008R2. Cela ressemblerait à ce qui suit:

<Condition Message="Windows Server 2008R2 required"> 
    <![CDATA[(VersionNT = 601 AND MsiNTProductType > 1) OR Installed]]> 
</Condition> 
Questions connexes