Распространение VC++ Redist... запуск установщика, когда он уже установлен, вызывает проблемы
Используя установщик Inno, мы распространяем распространяемый VC++ вместе с нашим приложением, чтобы мы могли запускать его автоматически. Мы обнаружили, что при запуске его в системе, в которой он уже установлен, мы просим исправить / отменить установку, которая может полностью запутать пользователей.
Это можно обойти? Может быть, флаг на установщике или что-то?
Благодарю.
4 ответа
Попробуйте флаг /q http://support.microsoft.com/kb/227091 (при условии, что вы устанавливаете его с помощью вызова msiexec.exe для их распространяемого)
По какой-то причине ни один из приведенных выше ответов не работал для меня. Это сделал, однако:
[Run]
Filename: {tmp}\vcredist_x86.exe; Parameters: "/passive /Q:a /c:""msiexec /qb /i vcredist.msi"" "; StatusMsg: Installing 2010 RunTime...
[Files]
Source: vendor/vcredist_x86.exe; DestDir: {tmp}
Я получил подсказку для этого, запустив vcredist_x86.exe /?, Как отмечено в нижней части этой темы: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/a8d4d5b4-7927-4c86-95e8-3cd8b3018ae8/
В качестве дальнейшего примечания, еще один возможный вариант для перераспределения - просто статическая ссылка на (вашу версию) msvcrt, см. Комментарии в http://blogs.msdn.com/b/vcblog/archive/2007/10/12/how-to-redistribute-the-visual-c-libraries-with-your-application.aspx (хотя MS, видимо, недовольна этим типом статического связывания, по крайней мере, вам не понадобится dll).
Распространение библиотек времени выполнения Visual C++ (MSVCRT) также может быть полезным.
Также обратите внимание, что если вы можете гарантировать, что у вас есть контроль, вы можете просто включить msvcr100.dll в тот же каталог, что и ваш исполняемый файл, и это тоже будет работать, хотя и не очень стандартное решение.
Эта тема разрешила мои проблемы:
(взято из комментария в другом ответе)
Хотя это не относится к установщику Inno, этот связанный вопрос предоставляет решение для проекта установки Visual Studio 2010. Проблема связана с тем, что пакет обновления 1 (SP1) vcredist изменил код продукта, тогда как Visual Studio использует старый код. Вот почему уже установленная проверка не проходит.