Если это 64-битная машина, вам нужно использовать VERSIONNT64 вместо свойства VERSIONNT .
Могу я спросить, почему вы меняете код обновления в зависимости от операционной системы?Если вы просто пытаетесь избежать поддержки двух разных версий файла WXS, почему бы вам не сделать вместо этого условную установку?Если в Win7 и Win8 имеются определенные компоненты / функции, почему бы не пометить компоненты / функции как условные, используя Условный элемент ?
ИЛИ Вы можете заблокировать всю установку на основе операционной системы, как указано ЗДЕСЬ
Обновление
<?define MyUpgradeCode ?>
<?if VersionNT=601?>
<?define MyUpgradeCode="{BF23D7DA-FE7D-446A-8950-3B92DD40FED3}"?>
<?elseif VersionNT>=602?>
<?define MyUpgradeCode="{3CA8F7F3-312B-4778-97CE-EE9B2C5453E6}"?>
<?endif?>
Замените ваш WXS вышеуказанным кодом, и он будет работать.Сначала вы определяете переменную, а затем устанавливаете ее значение в коде IF / ElseIF.
Теперь важно отметить, что IF / Else и все другие условные операторы в WIX оцениваются во время сборки.Поэтому он будет устанавливать свойство обновления в зависимости от версии ОС компьютера / сервера, на котором он компилируется, а не там, где он развертывается.
Цель условного оператора состоит в том, чтобы позволить вам включитьили исключить сегмент XML во время сборки.Если выражение оценивается как true, оно будет включено.Если оно оценивается как ложное, оно будет проигнорировано.
Подробнее об этом здесь. WIX PRE PROCESSOR