У меня есть программное обеспечение, которое закодировано на C#. Это зависит от двух (!) Сторонних dll, которые требуют перераспределения Visual C++ 2008 и Visual C++ 2005. Первоначально инсталлятор был встроен в InnoSetup со всеми «vs200x_sp1_vcredist_x ??. Exe», встроенными и запущенными во время установки. Однако, поскольку в нем отсутствуют некоторые дополнительные функции, мы решили перейти на Wix Toolset.Как встраивать среду Visual C++, требуемую от dll сторонних разработчиков
Проблема заключается в том, что MSI работает в более ограниченной среде, поэтому я не понял, что является лучшим способом потребовать правильного выполнения этого распространяемого файла. Я попытался использовать модули слияния вместо этого, но это не сработало - я вижу, что файлы были установлены, но хост зависимостей показывает, что dll по-прежнему не ссылается на правильную версию.
Я думаю, что WinSxS ухудшает ситуацию, по крайней мере, в этом случае, поскольку программное обеспечение продолжает сбой при появлении сообщения об ошибке «Конфигурация Windows Side by Side (14001)», когда я использую подход слияния.
Так что вопрос:
Есть ли способ создать MSI, который запускает ех, что установить некоторые предпосылки? Я бы не возражал, чтобы эти предварительные условия были загружены или просто встроены.
Я знаю, что информация WinSxS хранится в манифесте dll. Поэтому, если мне было разрешено удалить информацию о манифестах третьей стороной и использовать динамическую загрузку dll, проблема может быть решена. Однако это законно? Так как мне тогда понадобится встроить DLL Microsoft прямо в msi.
Я заметил, что один из манифеста dll говорит, что его требуемая версия «9.0.21022.8», но в моем MSM-файле «9.0.30729.6161». Это проблема? Если это так, я могу решить проблему, модифицируя манифест, чтобы разрешить правильную версию? Я не думаю, что это приведет к тому, что dll не будет работать.
Не можете ли вы использовать тот же самый VC-редист, как и раньше, в загрузчике WiX? – PhilDW
Это текущее решение, хотя ... Но я ищу решения, которые производят MSI, а не EXE. –
Подход модуля слияния должен работать. Проблемы могут заключаться в том, что для установки этих файлов требуется установка каждой установки с высотой, и вам также необходимо включить модули слияния политик, а также обычные. Они перенаправляют вызовы до последних версий MS Dll. – PhilDW