Абсолютно лучший способ сделать это - сделать так, чтобы файл EXE мог определять свою собственную операционную среду и выбирать другой метод, в зависимости от того, что предоставляет ОС, так что есть только один двоичный файл для работы.
Есть много причин для этого:
- отдельный двоичный файл почти похож на базу с двумя кодами в том смысле, что он должен проходить полный отдельный контроль качества для каждого выпуска, и, как правило, легче отлаживать и исправлять отдельный двоичный файл
- различные двоичные файлы могут привести к проблемам с исправлениями и обновлением, и, как известно, их трудно отлаживать и исправлять
- ваш установщик не пройдет проверку установщика Windows, если вы используете одно и то же место установки для разных файлов с одинаковыми именами. Как правило, это не проблема, если вы не хотите пройти сертификацию от Microsoft для своего установщика
- MSI неуклюж, когда речь заходит о развертывании разных версий одного и того же файла
Если вам необходимо развернуть два двоичных файла, я бы создал новый компонент с другой копией файла EXE и установил его либо с другим именем файла, либо с тем же именем файла, но в другой папке установки. Затем вы устанавливаете компоненты с файлами как взаимоисключающие для установки, используя условия установщика Windows. Это позволит правильное исправление и обновление.