2015-01-29 6 views
0

У меня есть программное обеспечение, которое закодировано на 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)», когда я использую подход слияния.

Так что вопрос:

  1. Есть ли способ создать MSI, который запускает ех, что установить некоторые предпосылки? Я бы не возражал, чтобы эти предварительные условия были загружены или просто встроены.

  2. Я знаю, что информация WinSxS хранится в манифесте dll. Поэтому, если мне было разрешено удалить информацию о манифестах третьей стороной и использовать динамическую загрузку dll, проблема может быть решена. Однако это законно? Так как мне тогда понадобится встроить DLL Microsoft прямо в msi.

  3. Я заметил, что один из манифеста dll говорит, что его требуемая версия «9.0.21022.8», но в моем MSM-файле «9.0.30729.6161». Это проблема? Если это так, я могу решить проблему, модифицируя манифест, чтобы разрешить правильную версию? Я не думаю, что это приведет к тому, что dll не будет работать.

+1

Не можете ли вы использовать тот же самый VC-редист, как и раньше, в загрузчике WiX? – PhilDW

+0

Это текущее решение, хотя ... Но я ищу решения, которые производят MSI, а не EXE. –

+1

Подход модуля слияния должен работать. Проблемы могут заключаться в том, что для установки этих файлов требуется установка каждой установки с высотой, и вам также необходимо включить модули слияния политик, а также обычные. Они перенаправляют вызовы до последних версий MS Dll. – PhilDW

ответ

0

Файл msi должен устанавливать только ваше программное обеспечение. Если вам необходимо установить предварительные условия, вы должны использовать для этого загрузчик. Ответ Bootstrapper заключается в установке предварительных реквизитов, и это не задача вашего msi.

Если вы видите, что загрузочный скрипт wix является сложным, вы можете попробовать простой загрузчик, например, bootstraper установщика dotnet. вы можете скачать его с http://dblock.github.io/dotnetinstaller/

Смежные вопросы