Определить, доступна ли сборка - PullRequest
3 голосов
/ 28 апреля 2010

Я внедряю установщик в Java, который должен загрузить и установить приложение для непривилегированных пользователей в Windows (от XP и выше). Приложение написано на C ++ и зависит от обычных VC runtime-библиотек (msvcm90.dll и друзей). Чтобы сэкономить пропускную способность, я хочу не загружать распространяемые VC, если они уже доступны для пользователя. У меня, однако, есть проблема с поиском надежного метода, чтобы определить, установлена ​​ли сборка.

Если сборка отсутствует, я разверну ее, как описано здесь:

http://msdn.microsoft.com/en-us/library/ms235291%28VS.80%29.aspx

Таким образом, вопрос заключается просто в том, как определить, установлена ​​ли (какая-либо) сборка на машине. Нет необходимости делать это из Java. Я легко могу написать небольшой зонд на C ++ и связать его статически для задачи.

jgaa

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

Если вы хотите написать небольшую тестовую программу, а не писать ту, которая ищет ваши зависимости, напишите ту, которая имеет те же зависимости, что и ваше приложение. Попробуйте запустить его. Если он работает, зависимости на месте. Если это не удается, вероятной причиной является отсутствие зависимостей.

0 голосов
/ 28 апреля 2010

Кажется довольно сложным трюком на самом деле, поскольку в зависимости от настроек они могут уже находиться в нескольких возможных местах. Возможно, лучшим вариантом было бы проверить наличие этих библиотек DLL с помощью WinAPI LoadLibrary - это должно найти любую библиотеку DLL, которая является общей и подходит для сборки автоматически.

Еще лучше LoadLibrary DLL, которая требует их, как предлагает Бен.

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