Если я правильно понял вопрос, MAIN.EXE получит ярлык, если не будет установлен MIDDLEMAN.EXE.В этом случае MIDDLEMAN.EXE получает ярлык.
Это странная проблема в том смысле, что наличие компонента меняет определение другого компонента.Тем не менее, это может быть сделано.Я бы сделал это, создав компонент для MIDDLEMAN.EXE и определив его ярлык.Создайте другой компонент для MAIN.EXE и не определяйте его ярлык.
Затем напишите настраиваемое действие, которое выполняется в последовательности выполнения в немедленном выполнении, которое выполняется после расчета стоимости файла.Пусть он проверит, не установлен ли MIDDLEMAN.EXE и не устанавливается ли он.Если это так, запишите временную строку в таблицу ShortCut, чтобы определить ShortCut для MAIN.EXE.
Оттуда вы можете позволить MSI обрабатывать все остальное без необходимости в отложенных пользовательских действиях для обработки обслуживания.Ярлык.
Тем не менее, я не могу не задаться вопросом, нельзя ли это упростить, изменив дизайн приложения.По сути, вы пытаетесь выполнить внедрение зависимостей на уровне EXE, и было бы проще сделать это на уровне DLL.Другими словами:
MAIN.EXE с ShortCut Optional DLL
MAIN.EXE всегда вызывается, но он будет вести себя иначе, когда присутствует Optional.DLL.