Консультация № 159260
31.01.2009, 13:14
0.00 руб.
0 8 0
День добрый!
Для решения поставленных задач были использованы некоторые библиотеки Acceess. Но при установке БД на другом компьютере потребуется вручную подключить эти библиотеки. Собственно вопрос: как сделать возможным их автоматическое подключение?Пожалуйста, подкрепите свой ответ примером кода. Спасибо большое.

Обсуждение

давно
Профессионал
848
1596
31.01.2009, 15:07
общий
вы уже определили список компонентов которые потребуются для нормальной работы вашей программе на др компе?
Неизвестный
31.01.2009, 15:27
общий
Miсrosoft Forms 2.0 Objects Library
Miсrosoft ActiveX Data Objects 2.1 Recordset 2.8 Library
Microsoft DAO 3.6 Objects Library
давно
Профессионал
848
1596
31.01.2009, 16:41
общий
ну я делал батник
Код:

@move msxbse35.dll %windir%\system32\msxbse35.dll
@move vb5db.dll %windir%\system32\vb5db.dll
@%windir%\system32\regsvr32.exe /s %windir%\system32\msxbse35.dll
@%windir%\system32\regsvr32.exe /s %windir%\system32\vb5db.dll

вообщем он перемещал нужные DLL в системную директорию и регистрировал их. Батник нужно выполнить 1 раз на новой машине.
Если такой вариант кажется не оч красивым или не подходит, то могу дать следующий вариант. Все нужные DLL хранятся в ресурсах вашего EXE при запуске библиотеки извлекаются, копируются в системную директорию и регистрируются -т.е. весь код инсталяции пишется на VB.
-кстате возможно вы не обойдетесь тока 3-мя dll, возможно они будут цеплятся еще и за др библиотеки....
Неизвестный
31.01.2009, 17:43
общий
Спасибо! Но, возможно, я неправильно сформулировал вопрос: необходимо , чтобы при запуске БД (созданной в MS Access 2007) на новой машине, происходила автоматическая регистрация нужных библиотек, необходимых для дальнейшей нормальной работы БД.
Неизвестный
31.01.2009, 21:02
общий
Здравствуйте Александр999.
Единожды выполненная регистрация библиотек в системе, может существовать до перестановки системы или де инсталляции.
с помощью кода подобного выложенному PsySex, можно установить в системе любую библиотеку.
Но в Вашем случае, нет необходимости регистрировать библиотеки (тем более "при запуске БД"), т.к.
перечисленные библиотеки входят в базовый пакет MS Office. и при использовании СУБД MS Acceess,
вполне достаточно инсталляции MS Office.
Евгений.
Неизвестный
01.02.2009, 09:28
общий
Спасибо за ответ, Евгений Алексеевич! Действительно, это так - "единожды выполненная регистрация библиотек в системе, может существовать до перестановки системы или де инсталляции". Но речь идёт о том, чтобы при запуске БД на другом компьютере, были автоматически зарегистрированы нужные библиотеки. Не совсем верно то, что перечисленные мной бибилиотеки, уже регистрируются при установке MS Office, - проверяно. Ещё раз повторю вопрос: на компьтере А была создана БД в MS Access 2007, были вручную подключены перечисленные выше библиотеки. Потом потребовалось перенести БД на компьютер Б, но там пришлось подключать опять вручную эти же библиотеки. Как же сделать так, чтобы при запуске БД на компьютере Б, автоматически зарегистрировать библиотеки?
давно
Профессионал
848
1596
02.02.2009, 10:59
общий
ну кроме как теста на файл exist я не вижу варианта определения установленной библиотеки.. Хотя возможно это и можно сделать читая нужный ключ из реестра, но я не знаю какойНапример что касается ДАО.
Т.е. при запуске вашей проги она должна проверить наличие dao360.dll, и если файл отсутствует запустить процесс инсталяции. Что нужно для установки ДАО можно читать здесь. Как я понял нам нужен пакет MDAC или MDAC_TYP.EXE который есть в установочном пакете VB6. И сам файл dao360.dll.
Код
Код:

sCommonFilesPath = "C:\Program Files\Common Files"
sDAO = sCommonFilesPath + "\Microsoft Shared\DAO\dao360.dll"
If Len(Dir(sDAO)) = 0 Then
'install libriary
End If

здесь путь C:\Program Files\Common Files жестко прописан, впринципе наверна на 99% компов он таким и будет. Но если вы хотите быть уверенным что Common Files находится именно там, то лучче прочитать значение CommonFilesDir из ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
Итак если dao360.dll если не был обнаружен вы запускаете инсталяцию MDAC_TYP.EXE, возможно для его запуска существуют ключи при помощи которых можно запустить инсталяцию в автоматическом режиме и пользователю не нужно будет нажимать на кнопки. Затем копируете dao360.dll, если нужно попутно создавая путь \DAO .Регистрируете библиотеку при помощи Shell и regsvr32.exe /s ... и все должно заработать. Файлы dao360.dll и MDAC_TYP.EXE надо будет тащить за собой в отдельной папке.
Неизвестный
02.02.2009, 19:56
общий
PsySex, спасибо Вам!
Форма ответа