Возник такой вопрос:
при запуске приложения (VB6) нужно проверить установлены ли некоторые программные продукты(компоненты). Может кто сталкивался с такой или похожей ситуацией, посоветуйте пути решения этой проблемы или кинте урлом.
З.Ы. Пробовал из реестра считывать (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall) и проверять значения DisplayName для каждого ключа, но столкнулся с тем что некоторые ключи остаются после удаления программ.
Пользовался поиском, но не нашел нужного решения.
Спасибо за внимание.
Здравствуйте, Kain81, Вы писали:
K>Привет всем
K>Возник такой вопрос: K>при запуске приложения (VB6) нужно проверить установлены ли некоторые программные продукты(компоненты). Может кто сталкивался с такой или похожей ситуацией, посоветуйте пути решения этой проблемы или кинте урлом.
K>З.Ы. Пробовал из реестра считывать (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall) и проверять значения DisplayName для каждого ключа, но столкнулся с тем что некоторые ключи остаются после удаления программ. K>Пользовался поиском, но не нашел нужного решения. K>Спасибо за внимание.
Если программные продукты(компоненты) "понимают" COM
то через CreateObject() и обработать ошибку
... Хорошо уметь читать между строк. Это иногда
приносит большую пользу
Re: проверить установлен ли компонент
От:
Аноним
Дата:
22.09.05 05:19
Оценка:
Здравствуйте, Kain81, Вы писали:
K>З.Ы. Пробовал из реестра считывать (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall) и проверять значения DisplayName для каждого ключа, но столкнулся с тем что некоторые ключи остаются после удаления программ. K>Пользовался поиском, но не нашел нужного решения.
Если это ActiveX компонент и нам известны параметры образцового (GUID, Version, размер), то с помощью метода LoadRegTypeLib TLbInf32.dll считываем версию и размер имеющегося (если файл отсутствует то поймается ошибка). Сравниваем — если у имеющегося версия меньше чем у образца или отличается размер/контрольная сумма — устанавливаем и регистрим.
По крайней мере у меня именно так и делается уже несколько лет — никаких проблем не было вообще...
Если точнее, то сделана маленькая утилитка (обозвана Starter.exe) которая считывает ini-файл с сервера. В этой ini-шке прописаны все компоненты необходимые программе (включая ярлык, help-файлы, MDAC...), сравнивает их с имеющимися на компьютере, при необходимости загружает новые и регистрит, после чего стартует основную программу. Получилось все в итоге дюже удобно — мне достаточно один раз ее запустить чтобы программа установилась на клиентской машине — и не иметь вообще никаких проблем с ее обновлением.
Последнее что в нее добавил — это сверка контрольной суммы файлов (просто для большей защиты).