powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
25 сообщений из 29, страница 1 из 2
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438398
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть проект где используются Microsoft Visual C++ Runtime Libraryes 2012 года. Каждый раз при установке программы запускать инсталлер Microsoft Visual C++ Runtime Libraryes довольно не приятная процедура, так как большинство пользователей не понимают что это и зачем.
Можно ли программно определить есть ли на компьютере данные библиотеки и если есть, то какой они версии? (Для создания инсталятора использую INNO Setup, если это важно)
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438469
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterКаждый раз при установке программы запускать инсталлер Microsoft Visual
C++ Runtime Libraryes довольно не приятная процедура, так как большинство пользователей не
понимают что это и зачем.
А зачем ты заставляешь их запускать его руками? Сам в режиме /SILENT этого сделать не
умеешь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438594
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighter,

Можно загрузить библиотеку, загрузить из неё ресурс типа VERSION_INFO и оттуда взять версию библиотеки.

Подробности в MSDN.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438623
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Затем, что её установка происходит оооочень долго, а когда программа установки что-то очень долго делает в конце установки некоторые пользователи пугаются и закрывают установку (прога рассчитана в том числе на пользователей не имеющих глубоких познаний в компьютере). Хотя я обдумываю данный вариант в виде решения. А что будет выбрано из Remove / Repair / Cancel при тихой установке?

MasterZiv,

MasterZivHellFighter,

Можно загрузить библиотеку, загрузить из неё ресурс типа VERSION_INFO и оттуда взять версию библиотеки.

Подробности в MSDN.

Если я правильно понимаю, то Вы описали способ получения версии из инсталятора. Если это так, то проблема в получении версии установленного набора библиотек.
Если я ошибся, то можно по подробнее на тему "загрузить библиотеку" для локально установленного дистрибутива?
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438726
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Runtime обычным копированием "устанавливается". Просто положи нужные DLL-ки рядом со своим EXE.
Какие нужны вычисли копированием своей проги на голую винду. Запускай, будет сообщение выскакивать что надо такую-то DLL, и подкладывай пока не заработает. Потом все что доложил копируй к пользователю на комп.

PS Если наворотов при инсталяции не надо, то WinRAR отличный инсталятор. И прав админских не надо для установки.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438745
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Навороты при инсталяции нужны.
Ну тоже вариант, но очень уш запарный. Думаю хорошей альтернативой копированию файлов по очереди стало бы использование проги Depends, если я правильно понимаю её принцип действия, но я пока с ней не совсем разобрался.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438856
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterЕсли я правильно понимаю, то Вы описали способ получения версии из инсталятора.
Если я ошибся, то можно по подробнее на тему "загрузить библиотеку" для локально установленного дистрибутива?

Без инсталятора. Без каких-либо дистрибутивов.

LoadLibrary
LoadResource

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648008(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/aa381058(v=vs.85).aspx
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438860
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TRuntime обычным копированием "устанавливается". Просто положи нужные DLL-ки рядом со своим EXE.
Какие нужны вычисли копированием своей проги на голую винду. Запускай, будет сообщение выскакивать что надо такую-то DLL, и подкладывай пока не заработает. Потом все что доложил копируй к пользователю на комп.


Это всё здорово, но только в конце концов кончается обычно плохо.
В системе обычно есть CRT и хорошо, если оно нужной версии.
А вот если другой, да потом запускают программу не из того каталога, тут и начинается...
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438906
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivА вот если другой, да потом запускают программу не из того каталога, тут и
начинается...
Оно обычно начинается даже если запускают программу из того каталога, поскольку С++
рантайм требует манифестов и прочей дребедени.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438926
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivА вот если другой, да потом запускают программу не из того каталога, тут и начинается...
Если верить Рихтеру то сначала DLL ищется там где живет EXE.

Если судить по близкому мне фоксу, то так оно и есть. Там с рантаймом все гораздо хуже, если в систему залит от версии *.0 то бывают нездоровые глюки на ровном месте. Поэтому кладу рантайм только в папку с EXE, проблем нет, мой EXE всегда исполняется нужным мне рантаймом.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438934
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivБез инсталятора. Без каких-либо дистрибутивов.

LoadLibrary
LoadResource
Если нет вообще рантайма нужного? Как скомпилировать EXE который сделает LoadLibrary() ? При старте EXE рантайм будет искать, если не найдет - не запустится.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438936
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZivА вот если другой, да потом запускают программу не из того каталога, тут и
начинается...
Оно обычно начинается даже если запускают программу из того каталога, поскольку С++
рантайм требует манифестов и прочей дребедени.


Не всегда. Только в определённый период развития оного.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438938
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TMasterZivБез инсталятора. Без каких-либо дистрибутивов.

LoadLibrary
LoadResource
Если нет вообще рантайма нужного? Как скомпилировать EXE который сделает LoadLibrary() ? При старте EXE рантайм будет искать, если не найдет - не запустится.

А зачем тебе CRT для этого ?
Пиши без CRT.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТолько в определённый период развития оного.
Ну да, у 2012-й студии может это и пофиксили (по крайней мере обещали), а вот сборки на
2005-2008 простым подкладыванием DLL-ек было не запустить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438958
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDima Tпропущено...

Если нет вообще рантайма нужного? Как скомпилировать EXE который сделает LoadLibrary() ? При старте EXE рантайм будет искать, если не найдет - не запустится.

А зачем тебе CRT для этого ?
Пиши без CRT.
Научи как. Я пытался обойтись без него, не пользовал никаких Сишных функций, т.к. мне только printf() нужен и то без него проживу, но компилятор все равно рантайм включает в загрузку DLL. Сморишь Far`ом - рантайм загружен в твоем процессе.

Вот откомпилировал в 2012 студии такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#include "stdafx.h"
#include <windows.h>

int main(int argc, char* argv[])
{
	Sleep(100000);
	return 0;
}


Забросил на комп без рантайма - не запускается. Требует msvcr110.dll

far показываетModules:
Base Size Path (version info is not displayed)
01170000 6000 T:\VC\TestVC\Release\TestVC.exe
77480000 180000 C:\Windows\SysWOW64\ntdll.dll
769C0000 110000 C:\Windows\syswow64\kernel32.dll
76590000 47000 C:\Windows\syswow64\KERNELBASE.dll
74420000 D2000 C:\Windows\system32\MSVCR110.dll


Насколько я понимаю, эта строчка
Код: plaintext
1.
int main(int argc, char* argv[])


требует наличия рантайма.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438964
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

ОК, если тебе так нужен рантайм (хотя здесь вроде бы причин для того нет), собирай со СТАТИЧЕСКИМ рантаймом (.lib).

Собирай в RELEASE режиме.
Собирай без доп. проверок в рантайме, я не знаю точно, но думаю, их можно отключить.
Т.е. вариантов много.

Также реализация своего sprintf есть в Win32.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438975
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TC:\Windows\system32\MSVCR110.dll
Мнда... Это, вообще-то С рантайм, а в сабже - С++ рантайм. Это как бэ две большие разницы...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438988
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDima T,

ОК, если тебе так нужен рантайм (хотя здесь вроде бы причин для того нет)
Мне он не нужен, но избавится от него я не могу. Может не умею. Я не профи вот и прошу подсказать как без него сделать EXE. В свое время я мозг сломал чтоб эту проблему решить, но она не решаема как мне кажется.

MasterZiv собирай со СТАТИЧЕСКИМ рантаймом (.lib).
Подскажи где настроить или ссылку дай где почитать как это сделать.

MasterZivСобирай в RELEASE режиме.
Собирай без доп. проверок в рантайме, я не знаю точно, но думаю, их можно отключить.
Т.е. вариантов много.
Дай хоть один пример проекта EXE (не требующего рантайм) выполняющего одну строку
Код: plaintext
1.
Sleep(100000);


Дальше я сам разберусь.

PS Я не глумлюсь и не троллю. Мне это реально надо. как уже писал VC мне надо только для оберток над WinAPI из-за ограничений фокса. У меня несколько тысяч пользователей, автообновление проги, и если после него даже всего у сотни выскочит что не найдена какая-то DLL то это будет большая .опа.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38438996
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ не глумлюсь и не троллю.
Тупишь: http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.100).aspx
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38439018
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDima TЯ не глумлюсь и не троллю.
Тупишь: http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.100).aspx

Туплю. На VC6 сижу до сих пор.
Спасибо. /MT помогло с EXE из Sleep(). Работает без доп. DLL (MSVCR110.dll). Буду с DLL-проектами пробовать.

Потестил: в VC6 (проект Win32 console) релиз никаких рантаймов не грузит для такой проги, даже без /MT
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38439022
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНа VC6 сижу до сих пор.
Тогда что у тебя там делает рантайм от VC2012? У VC6 эта DLL называется msvcr60.dll.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38439030
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDima TНа VC6 сижу до сих пор.
Тогда что у тебя там делает рантайм от VC2012? У VC6 эта DLL называется msvcr60.dll.

2012 тоже есть. Поставил пока для тестов.
Работающий софт на VC6 собран.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38439036
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сказать Спасибо всем критиковавшим на мои домыслы. В очередной раз понял что самопридуманные выводы надо иногда пересматривать, а не воспринимать как аксиомы.
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38439656
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivHellFighterЕсли я правильно понимаю, то Вы описали способ получения версии из инсталятора.
Если я ошибся, то можно по подробнее на тему "загрузить библиотеку" для локально установленного дистрибутива?

Без инсталятора. Без каких-либо дистрибутивов.

LoadLibrary
LoadResource

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648008(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/aa381058(v=vs.85).aspx

Ну да, я так понимаю это всё не сложно сделать, если точно знаешь что использует твоя прога.
В принципе, если знать что используется, то я думаю есть достаточно много вариантов проверки наличия и версии. Тогда я не верно зада вопрос.

Как узнать что использует твоё приложение? Копированием недостающих библиотек по очереди это как-то не айс. Знаю прогу Depends, но как-то пытался скопировать всё необходимое используя её - ничего не получилось. Какие ещё есть способы определения используемых приложением DLL? (Видел тут про Far писали, но в нём такого не наблюдал ни разу)

ЗЫ: Это всё нужно для DLL COM-сервера, отвечающего за расширение контекстного меню в Shell. Бог его знает что он там вообще подгружает...
...
Рейтинг: 0 / 0
Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
    #38439684
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighter Бог его знает что он там вообще подгружает...
это только от тебя зависит
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как узнать установлены ли Microsoft Visual C++ Runtime Libraryes?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]