Поскольку ответа на этот вопрос пока нет, я подумал, что скажу, что я в итоге сделал.
Поддерживать условие для каждого компонента, повторяющегося для каждой среды, было бы кошмаром, поэтомуЯ решил поместить все свойства, связанные с окружением, в настраиваемое действие VBscript.Мне пришлось сохранить его в реестре и извлечь его во время удаления \ обновления, когда пользовательский интерфейс недоступен, но изначально он, казалось, работал довольно хорошо.
У меня возникла проблема, как только я сказал ей запускать службы при установке - он не распознал тот факт, что служба работала при запуске удаления, и обнаружил, что всплывающее окно сообщает, что файлы заблокированы.Из журнала он правильно извлек имя службы, поэтому я не мог понять, почему, но это определенно было связано с тем, что имя службы отсутствовало в таблице msi.
Все становилось немного сложным игрязный (и запутанный для новичка!), поэтому я решил попробовать другой подход, основанный на отличном посте здесь хитрости и советы WiX - Создание версий Live, Test, Training, ... с использованием одного и того жеисходные файлы.
Он работает очень хорошо и значительно упрощает обработку обновлений в разных ветвях (с одним и тем же env).
Единственный недостаток - время сборки значительно увеличилось, ноэто не проблема.Надеюсь, это кому-нибудь пригодится.