В WiX нет стандартного способа сделать это - вам понадобится специальное действие. Это должен быть немедленный CA, и он установит свойство, которое вы будете использовать в ваших условиях. Это пример кода, который делает то, что вам нужно, я думаю:
static bool IsIIS32bit()
{
var appPools = new DirectoryEntry("IIS://localhost/w3svc/AppPools");
int enable32Bit;
try
{
enable32Bit = (int)appPools.InvokeGet("Enable32bitAppOnWin64");
}
catch
{
enable32Bit = 0;
}
return enable32Bit == 1;
}
Обратите внимание, что в вашем примере вы используете переменные времени сборки, чтобы выбрать один из двух элементов SetProperty. Это будет работать, если у вас есть 2 пакета MSI, по одному для каждой платформы. В этом случае каждый ваш MSI-пакет будет иметь правильно установленное свойство. Дополнительное требование, которое вы добавляете сейчас (проверьте режим разрядности IIS), вынуждает вас перенести проверку во время установки. Следовательно, вам придется как-то переделывать логику условий.