Включите c ++ как pre-req, но он говорит: «Новая версия уже существует» - PullRequest
6 голосов
/ 29 октября 2011

Я использую проект установки Visual Studio. Если я перехожу к свойствам проекта установки, он позволяет мне выбрать, какие предварительные требования требуются, и в этот момент я выбираю C ++ Redistributable.

В некоторых системах это работает нормально, но недавно мои пользователи сообщают, что установка не удалась, потому что «На компьютере обнаружена более новая версия Microsoft Visual C ++ 2010 Redistributable».

Как правильно это сделать? Является ли обнаружение Visual Studio каким-то образом засоренным и неспособным обнаружить C ++?

Ответы [ 2 ]

4 голосов
/ 29 октября 2011

Тьфу, это безобразно. Мне было интересно, что произойдет после того, как Microsoft отказалась от параллельной установки библиотек времени выполнения для VS2010. Кажется очевидным, что переплетения переполнены этой ошибкой установщика. Самой большой жертвой, по-видимому, является сама Microsoft, которой не удается установить Streets и Maps.

Мне не известны какие-либо исправления безопасности, поэтому я должен предположить, что вы еще не обновили SP1. И ваши клиенты используют продукт поставщика, который сделал. Это битва, которую вы всегда будете терять однажды. Не забудьте воспользоваться преимуществами локального развертывания приложения для библиотек DLL, скопировав их в тот же каталог, что и ваш основной EXE-файл. Просто скопируйте их из каталога vc / redist перед тем, как собрать пакет установки, не нужно ставить галочку перед обязательным условием. Вам понадобится:

  • msvcr100.dll и msvcp100.dll для обычного CRT
  • atl100.dll, если вы используете ATL
  • mfc100.dll, mfc100u.dll, mfcm100.dll, mfc100u.dll, если вы используете MFC (u = Юникод, m = управляемый)
  • mfc100xxx.dll, где xxx - это трехбуквенный языковой код, если вы используете MFC на неанглийском компьютере
  • vcomp100.dll, если вы используете OpenMP в своем коде.

Единственным недостатком является то, что они не будут обновляться при наличии патча безопасности. Это также может быть преимуществом, в зависимости от того, какого цвета очки вы носите. Если вас это не устраивает, важно постоянно обновлять компьютер, на котором создается пакет установки, включая включение Центра обновления Windows.

1 голос
/ 29 октября 2011

В распространяемом Visual C ++ 2010 по умолчанию для обнаружения используется код продукта.Таким образом, распространяемая версия Visual C ++ 2010 SP1 не определяется как установленная.Вот почему пакет пытается установить его и терпит неудачу.

Хорошим решением является создание собственной настраиваемой предпосылки, которая использует лучшие критерии обнаружения.Вот статья, которая может вам помочь: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Проекты установки Visual Studio не поддерживают создание пользовательских предварительных условий.Однако это можно сделать, вручную создав необходимые манифесты.

Вы можете найти структуру манифестов здесь: http://msdn.microsoft.com/en-us/library/ms229223(VS.80).aspx

Эти манифесты могут быть сгенерированы автоматически с помощью генератора манифеста Bootstrapper tool.

После создания манифестов пакета вы можете добавить все эти файлы (включая пакет) в отдельную папку в папке предварительных требований Visual Studio, например:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\

Таким образом Visual Studio покажет необходимое условие на странице свойств вашего проекта установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...