![]() |
Вопрос об установке программы - C++2012
Здравствуйте, подскажите пожалуйста, существует четыре версии программы C++2012, а именно: 11.0.50727.1; 11.0.51106.1; 11.0.60610.1 и самая новая версия - 11.0.61030.0
Мой вопрос: если я установлю самую новую версию - 11.0.61030.0, а для работы игры, например, потребуется более ранняя версия - 11.0.51106.1, то игра заработает или нет, т.е. самая новая версия включает в себя и все более старые версии или нужно устанавливать каждую версию программы C++2012? Заранее спасибо за Ваши ответы. |
Цитата:
Цитата:
|
Цитата:
Цитата:
Но даже 2005 и 2008 обычно содержали в манифестах директивы bindingRedirect, например: Код:
<bindingRedirect oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.6161"/> Цитата:
Но в данной теме речь идет исключительно о VC 2012. |
Цитата:
Цитата:
Цитата:
Возможно, это просто записи, a файлы обновляются. Цитата:
Цитата:
|
Цитата:
P. S. Конечно, 2008 и 2012 (и остальные) друг с другом никак не связаны и не являются взаимозаменяемыми. |
Petya V4sechkin, Не подсунет. Проверялось на многих игр. Все равно будет требовать установки именно той версии, под которую заточена данная игра.
Исполняемый файл (exe файл, который вдобавок еще и как правило патченный) игры в не обладает такой логикой и не читает манифесты. Даже в библиотеке Steam (лицензионные игры) в дистрибутив игр добавляется и устанавливается(в тихом режиме) собственная версия библиотек VС++. Если следовать вашему примеру, тогда вообще не нужно ничего добавлять в дистрибутив, а ограничиться установкой обновлений из Microsoft Update. |
Цитата:
Возьмем для примера какую-нибудь старую программу, типа 3DMark 2006. В ее файлах Exporter.dll и SI3.dll есть манифесты с зависимостями: Код:
<dependency> Но есть VC 2005 8.0.50727.6195 (соответствует SP1 с MFC Security Update). Там в файле x86_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_517205a10f4550e3.manifest директива bindingRedirect: Код:
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.6195"/> Код:
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.6910"/> Если вы по-прежнему мне не верите, вот события из Process Monitor: Код:
3DMark06.exe 4048 Load Image C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6910_none_d089c358442de345\msvcp80.dll SUCCESS Image Base: 0x6aae0000, Image Size: 0x87000 0.0000000 Игры/приложения, требующие VC 2012, просто грузят нужные им библиотеки из System32 (или SysWOW64 в зависимости от разрядности игры/приложения). |
Цитата:
Цитата:
Цитата:
Цитата:
Это все очень интересно и занимательно, но пример на утилите 3Dmark, а хотелось проверить на игре. Остаются вопросы: Почему игры требуют установки именно конкретных версий С++, даже когда установлена более новая? Если манифесты могут перенаправлять разные версии, почему производители добавляют устаревшие версии распр. компонентов С++(2005-2008)? Получается так, что производители игр и др. приложений не знают о манифестах и функциях Windows и пишут код таким образом, чтобы запуск проходил только с определенными версиями С++? |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Не понимаете? :) Ну вот есть VC 2005 8.0.50608.0 и 8.0.50727.6195. Это все VC 2005. Точно также есть VC 2012 11.0.51106.1 и 11.0.61030.0. Это все VC 2012. Но VC 2012 не заменяет VC 2005 :) |
Цитата:
Вопрос был именно в этом, а не в годах выпуска. С годом выпуска все понятно. Цитата:
|
Цитата:
И подкрепите его логом Process Monitor, как это сделал я. |
Petya V4sechkin, Не могу. Не умею пользоваться этой утилитой.
Привел пример из личного опыта. P.S. Относительно VC++ 2010 и выше согласен. Проверил установкой и запуском нескольких игр (где требуются эти библиотеки). Там действительно изменена установка компонентов. Тем не менее вопрос с С++ 2005-2008 остается открытым. Проведу эксперименты и посмотрю, как будет запускаться. |
|
Reprobates. Next Life
Prince Of Persia Антология Проверил еще раз. Обе игры не запускаются, если не установлены пререквизиты(естественно речь не о DirectX, Dotnet, OpenAL и пр.), несмотря на наличие обновленной версии VC++ 2005 и 2008. |
Demetriadis, сделайте лог Process Monitor следующим образом:
|
Время: 06:55. |
Время: 06:55.
© OSzone.net 2001-