Я использую приложение запуска, которое будет тестировать ОС и перемещаться по библиотекам DLL, чтобы во время выполнения использовались правильные библиотеки DLL (используйте библиотеки x86 в 32-битных ОС и т. Д.). Логика в лаунчере довольно проста. Что-то вроде:
If IntPtr.Size = 8 Then
'-- Copy x64 DLLs into position
Else
'-- Copy x86 DLLs into position
End If
Конечно, при копировании вам нужно копировать обратно, чтобы вы всегда могли переключаться между x64 и x86 (в случае переносимого приложения). Тем не менее, если вы устанавливаете непереносимое приложение, тогда запускать его не нужно, так как эта проверка ОС может быть выполнена внутри установщика (поэтому устанавливаются только правильные библиотеки DLL). Проекты установки Visual Studio не допускают этого (поскольку вы не можете смешивать компоненты x64 и x86 в одном установщике), но InstallShield разрешает это (это то, что я использую).
Вам нужно будет отредактировать файл проекта, чтобы использовать неспецифическую версию рассматриваемых библиотек DLL (в противном случае это перемещение и логика условной установки не будут выполнять то, что вам нужно).