VC 2012 объединить модули под Windows XP
У нас есть приложение VC++ 2012 для родной Windows (классическое толстое приложение). Также у нас есть установщик на основе NSIS.
Я хотел бы добавить модули слияния VC110_CRT в установщик, но модули слияния не могут быть установлены в Windows XP. Сообщение об ошибке есть.
Этот установочный пакет не может быть установлен службой установщика Windows. Необходимо установить пакет обновления Windows, который содержит более новую версию службы установщика Windows.
и да, это полностью обновленная Windows XP (SP 3 + все обновления). Насколько я понимаю, нам нужна как минимум Windows Vista для установки обновления.
Мой вопрос:
- Есть ли способ конвертировать модуль Microsoft_VC110_CRT_x86.msm, чтобы его можно было использовать под Windows XP
Я знаю, что могу использовать vs_2012_redist, но он имеет ~6,5 МБ вместо ~0,8 от размера модуля слияния. и мне нужен только CRT, потому что приложение использует QT, а не MFC/ATL/....
1 ответ
Это неверное сообщение об ошибке. MSIEXEC просматривает схему версии в SummaryInformationStream MSM и видит, что она более новая, чем версия MSI для Windows, и выдает вам это сообщение об ошибке.
По правде говоря, модули слияния никогда не могут быть установлены, потому что они не имеют понятия о продукте или функциях. Это просто инкапсулированные наборы компонентов и связанные метаданные установки. Модули слияния похожи на файлы.LIB в C/C++ и статически связаны (объединены) в MSI во время сборки.
NSIS не является установщиком Windows, поэтому он не может использовать модули слияния. Вместо этого вы должны использовать распространяемый Microsoft и запустить EXE с правильной командной строкой.
У вас есть только другие варианты: развернуть нужную DLL в частном порядке (в каталоге вашего приложения), статически связать ее с вашим EXE-файлом или создать дамп NSIS и создать правильный MSI.
Помните о безопасности / исправлениях последствий по вашему выбору.