|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
по результатам последнего FB installer survey решил устыдиться и искать клиенткую либу в реестре win7 x64 / fb 2.1 x86 / fb 2.5.5 x64 / fb 3rc x64 (установленны стандартными GUI-установщиками) HKCU\Software - следов firebird'a не вижу HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firebird Project - пустая папка HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances один единственный ключ DefaultInstance=C:\Program Files\Firebird\Firebird_2_5\ Итого - для моей 32-битной программы в реестре вообще ничего полезного нет, для 64-битных же программ есть только намёк, где можно пoискать одну из клиентских библиотек (если точно знаешь название), не самую последнюю к тому же (но возможно пока для 3rc отдельные правила, чтобы не прописывался *пока* в реестр). Названия же библиотеки, тем паче списка версий и названий - нет. Ищем "fbclient.dll" в стандартных местах Windows HKCR, HKCU - пусто HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs C:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll=4 C:\Program Files\Firebird\Firebird_2_5\WOW64\fbclient.dll=4 C:\Program Files\Firebird\Firebird_3_0\fbclient.dll=1 C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll=1 C:\Windows\system32\FBCLIENT.DLL=1 C:\Windows\system32\GDS32.DLL=1 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs C:\Program Files (x86)\Firebird\Firebird_2_1\bin\fbclient.dll=5 C:\Windows\system32\FBCLIENT.DLL=3 C:\Windows\system32\GDS32.DLL=4 То есть возможно имеет место быть "курица и яйцо", но я пока не вижу как бы я мог использовать это в простой аппликухе лучше, чем простое LoadLibrary и пусть ищет в %Path% Видно, что даже в Shared Libraries прописываются только библиотеки от fb 2.1, библиотеки же от 2.5/3.0 попали - в том числе 32-битные! - в 64-битный куст реестра, в который 32-битным аппликухам глядеть не резон. И даже в этих местах искать можно только полным перебором по заранее известным именам DLL, после чего из самого файла читать его версию после пробной загрузки/выгрузки. IMHO хотя и гипотетически возможно, но практического смысла не имеет. То есть остаются старые добрые "кладите весе в system32" и "правьте %PATH% чтобы показывал в firebird\WOW64 или firebird\bin". Решения "проверенные временем" но чреватые DLL Hell, от которого - судя по наличию этого пункта отдельно в опроснике - создатели инсталлятора надеялись уйти. No way. ---- Для сравнения, записи в реестре сделанные другими программами, со сходной задачей - позволить наперёд неизвестным пользователям найти и загрузить нужную DLL HKEY_CURRENT_USER\Software\MozillaPlugins\@mozilla.zeniko.ch/SumatraPDF_Browser_Plugin Path=C:\Program Files (x86)\SumatraPDF\npPdfViewer.dll HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=2.1.3 Path=C:\Program Files\VideoLAN\VLC\npvlc.dll HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@Microsoft.com/NpCtrl,version=1.0 C:\Program Files\Microsoft Silverlight\5.1.41105.0\npctrl.dll ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 12:46 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Arioch, в реестре про fbclient никогда не было, как и про gds32.dll. Была только ссылка на папку установки. прописывается она и убирается утилитой instreg.exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:07 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Arioch, а нафига? Для Win x64 берем два снапшота Firebird сервера - x86 и x86_64, выдергиваем оттуда библиотеки fbclient.dll, 64-битную помещаем в каталог %SystemRoot%\system32, а 32-битную в каталог %SystemRoot%\SysWOW64 (никак не наоборот!). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:21 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Ariochпо результатам последнего FB installer survey решил устыдиться и искать клиенткую либу в реестре "Не рекомендую. Съядят." (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:38 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructor64-битную помещаем в каталог %SystemRoot%\system32, а 32-битную в каталог %SystemRoot%\SysWOW64 (никак не наоборот!). Ты не поверишь, но может быть и наоборот. Это, видишь ли, зависит от разрядности утилиты, которой ты лезешь куда не следует. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:41 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЭто, видишь ли, зависит от разрядности утилиты, которой ты лезешь куда не следует. Это зависит от особенностей MS Windows. В 64-битных форточках каталог SysWOW64 предназначен для хранения 32-битных образов библиотек, а system32 для 64-битных (как ни странно). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:55 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructorВ 64-битных форточках каталог SysWOW64 предназначен для хранения 32-битных образов библиотек, а system32 для 64-битных (как ни странно). Повторяю ещё раз, медленно: system32 это виртуальный каталог и какие библиотеки увидит в нём приложение зависит от его разрядности. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 13:58 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, system32 не виртуальный, а вполне себе реальный. Когда загрузчик видит, что 32-битное приложения пытается получить из него 32-битную библиотеку (по таблице импорта приложения), он вместо каталога system32 подставляет SysWOW64. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:07 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:13 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructorвместо каталога system32 подставляет SysWOW64. Места, где что-то подставляется вместо чего-то обычно и называют "виртуальными", нет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:15 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdvв реестре про fbclient никогда не было, тогда этот вопрос в опроснике не имел практического смысла. И отсюда уже вопрос - хотят ли в принципе разработчики FB делать поиск клиентской библиотеке в реестре вместо DLL Hell Если да - то это надо делать немного по другому. Если нет - то такой вопрос в опроснике был чистой провокацией ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:28 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТы не поверишь, но может быть и наоборот не может 32-битная программа без спец-ключа видит system32 как полную копию SysWOW64, а 64-битные библиоткеи не видит в принципе 64-битная программа или 32-битная со спец-ключом видят 32-битные в SysWOW64, а 64-битные в system32 но режима "наоборот" - то есть видеть 64-битные билиотеки в SysWOW64 - такого режима нет в принципе Только, мышки мои, это частности, я же как мудрый филин вопрос "по стратегии" ставил Можно/нужно ли уйти от DLL Hell через прописывание разных клиентских библиотек в реестре. Чтобы изготовители инсталляторов не обижались на тупых прикладников и наоборот, что вполне возможно в случае разных неозвученных взаимных ожиданий. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:33 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, собственно, МП уже ответил. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:33 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructorArioch, а нафига? Поскольку такой пункт был в опроснике про инсталлятор, я сделал предположение, что FB Team ожидает от прикладников именно этого как правильного поведения, а копирование gds32/fbclient/fbembed в system32 считает грязным legacy, который зажимая нос приходится тащить в новый чудесный мир из-за косности прикладников. Что-то типа fbguardian ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:36 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
AriochМожно/нужно ли уйти от DLL Hell через прописывание разных клиентских библиотек в реестре. ни fbclient.dll ни gds32.dll в реестре не прописываются . А "уйти от dll hell" можно только одним способом - размещая библиотеку рядом с exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:43 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
AriochТолько, мышки мои, это частности, я же как мудрый филин вопрос "по стратегии" ставил Вопрос по стратегии стоял ещё во времена разработки версии 1.5. Если найдёшь архивы, тогда было сломано много копий и сгенерировано много бреда. Но, к счастью, разработчики таки не дошли до маразма заставлять всех-всех прикладников делать специальные ужимки и прыжки искать клиентскую библиотеку через реестр. И лично я надеюсь, что и сейчас до этого не дойдёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 14:45 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Arioch, предлагаю иную стратегию: В исталляторе сделать как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7.
В реестре стандартно путь в ветках: для 64 (или Windows x86_32) - HKLM\SOFTWARE\Firebird Project\Client для 32 на Windows x86_64 - HKLM\SOFTWARE\Wow6432Node\Firebird Project\Client ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:09 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
хотя, каталог "include" скорее в "Библиотеки разработчика", а не в "Документация и примеры". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:17 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructor, так ведь нужно ещё определиться, что писать то есть аппликуха должна, желательно, видеть ещё до попытки ткнуться в файл, про каждую DLL 1) версию частичную x.y 2) версию частичную x.y.z или даже x.y.z.bbbbb 3) разрядность 4) наличие embed-движка внутри DLL Вообще мне в этом плане импонирует симлинковая система хранения dll'ек разных версий в Линуксе, но в реестре симлинки делаются только на папки, не на значения ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:39 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Arioch3) разрядность а точнее даже архитектуру - x86, AMD64, WinRT/ARM, WinCE/ARM, etc ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:40 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdvAriochМожно/нужно ли уйти от DLL Hell через прописывание разных клиентских библиотек в реестре. ни fbclient.dll ни gds32.dll в реестре не прописываются . А "уйти от dll hell" можно только одним способом - размещая библиотеку рядом с exe. тогда на хрена этот пункт вообще был в опроснике инсталлятора, если его реализация в принципе невозможна ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:41 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdv ни fbclient.dll ни gds32.dll ну и до кучи, ты уже второй раз забываешь про третье имя - fbEmbed ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:42 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdvразмещая библиотеку рядом с exe. ...а заодно ICU, MSG и все что ещё может понадобиться ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:42 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructor Код: sql 1. 2. 3.
в плане готовых бинарников - там и сейчас так. но вот информации о клиенте для аппликух не публикуется и по умолчанию установка клиента в system32 тоже не делается ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 15:44 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Ariochв плане готовых бинарников - там и сейчас так. Lagacy - штука нужная. Ariochно вот информации о клиенте для аппликух не публикуется если пользователь захочет поставить только клиента, то только клиента и пихать в bin и путь к нему в ветках реестра: "HKLM\SOFTWARE\Firebird Project\Client" или "HKLM\SOFTWARE\Wow6432Node\Firebird Project\Client" в зависимости от разрядности ОС и FB клиента. Иными словами, при полной установке, пути для сервера и клиента будут указывать на один и тот же каталог bin. К примеру, если пользователь ставит полный Firebird x64, а потом еще 32-битный клиент, то каталог с образами сервера и клиента x64 по умолчанию в: "%ProgramFiles%\Firebird\Firebird_<major>_<minor>\bin", а образ 32-битного клиент по умолчанию в: "%ProgramFiles(x86)%\Firebird\Firebird_<major>_<minor>\bin" После чего разрабы смогут спокойно находить fbclient.dll через реестр. Хотя, ИМХО, пихать клиентские библиотеки в system32 и SysWOW64 не помешает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 16:34 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
AriochDBConstructor, так ведь нужно ещё определиться, что писать то есть аппликуха должна, желательно, видеть ещё до попытки ткнуться в файл, про каждую DLL 1) версию частичную x.y 2) версию частичную x.y.z или даже x.y.z.bbbbb 3) разрядность 4) наличие embed-движка внутри DLL Вообще мне в этом плане импонирует симлинковая система хранения dll'ек разных версий в Линуксе, но в реестре симлинки делаются только на папки, не на значения Если клиент грузит fbclient.dll через LoadLibrary (что обычно бывает в приложениях, писанных на C++ Builder и Delphi), то вообще никаких проблем. Если же приложение скомпоновано со статической линковкой "заглушки" (lib\fbclient_ms.lib) для fbclient.dll и есть желание подсовывать приложению правильную версию библиотеки, то надо смотреть в сторону winsxs (%SystemRoot%\winsxs). Про работу подсистемы winsxs знаю крайне мало, к сожалению... P.S. Хорошо бы в lib до кучи закинуть "заглушку" fbclient.a для ГНУСов. P.P.S. Если все сборки Firebird по прежнему делаются на MS VC++ 2005 SP1, то в дистрибутив неплохо бы поместить vcredist: https://www.microsoft.com/en-us/download/details.aspx?id=26347 который запускать в процессе развертывания дистрибутива с ключом "молчаливой" установки. Кстати, библиотеки из vcredist как раз разворачиваются в winsxs не перекрывая другие билды библиотек этих же версий. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 17:21 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructorПосле чего разрабы смогут спокойно находить fbclient.dll через реестр. мутота, извини за выражение. - приложение может быть 32битным, а установленный ФБ 64битным, или наоборот. - фб может вообще не быть на этом компьютере - ФБ может быть одной версии, а приложение должно работать с другой версией либы. - ну и сам же Arioch упомянул про ембеддед. Arioch написал какую-то лажу, а ты ему поддакиваешь. Если нет практического опыта приложений под разные ФБ - то я могу сказать. Надо клиента таскать с приложением. Аминь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:16 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdvНадо клиента таскать с приложением. Аминь. Но в некоторых случаях лучше обойтись строчкой "требуется установленный (в системный каталог) клиент Firebird версии не ниже чем..." в системных требованиях. Тут, правда, CORE-4847 жизнь подгаживает... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:22 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdv- приложение может быть 32битным, а установленный ФБ 64битным, или наоборот. В таком случае 32-битное приложение полезет за путем к fbclient.dll в ветку реестра "HKLM\SOFTWARE\Wow6432Node\Firebird Project\Client", которую, естественно, не найдет. kdv- фб может вообще не быть на этом компьютере Поэтому был предложен выбор установки клиентских библиотек без установки сервера, как это "всю жизнь" делают в установщике MS SQL Server. kdv- ФБ может быть одной версии, а приложение должно работать с другой версией либы. Для этих целей Microsoft использует подсистему winsxs, которая может хранить все билды библиотек одной и той же версии и подсовывать программе нужную библиотеку. kdvНадо клиента таскать с приложением. Аминь. Еще там же "таскать" все необходимые fbclient.dll библиотеки из MS VC++ 2005 SP1 (vcredist). я то не против... ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:32 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
DBConstructorДля этих целей Microsoft использует подсистему winsxs, которая может хранить все билды библиотек одной и той же версии и подсовывать программе нужную библиотеку. В отличии от библиотек MS, у fbclient.dll нет проблем с обратной и даже местами прямой совместимостью. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:42 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, значит одной "проблемой" меньше. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:46 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdv, Лажу написали авторы опросника про инсталлятор. Я же просто их лажу попытался применить к реальности. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:47 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Дaже примериь, а не применить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 19:47 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
AriochЛажу написали авторы опросника про инсталлятор. Я же просто их лажу попытался применить к реальности. там был вопрос Does your deployed applications checks the Firebird registry keys to find where the client library (fbclient.dll) is located, when loading it? следовательно, вопрос был про штатную ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firebird Project\Firebird Server\Instances DefaultInstance=... Откуда ты взял, что инсталлер пишет что-то про клиентскую либу в реестр - неизвестно (тем более, что все вопросы инсталлятора ФБ уже давно известны). Собственно, все это обсуждение - полная чешуя, потому что надо было сказать совсем другое. Например это: - сейчас вот так, и с этим есть такие-то проблемы. А вот если сделать вот эдак, то по крайней мере у 10% приложений с этим не будет проблем. А перед тем, как это сказать, неплохо бы подсобрать малость статистики. Хотя бы о том, что сейчас масса случаев, когда на одном компе приложения пытаются поставить разные ФБ в том или ином виде. Плюс совместимость протоколов fbclient/gds32. Плюс рассмотрение разных сценариев - от штучной установки, до массовой (на предприятии). И т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 20:08 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
Arioch, я еще добавлю, что разумеется, некто может делать какие угодно ветки в реестре для своего приложения, и туда класть фбклиента при установке этого приложения. Никому другому и в голову не придет посягать ни на эту ветку, ни на папки с этим фбклиентом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2015, 20:10 |
|
поиск FBClient.DLL в реестре
|
|||
---|---|---|---|
#18+
kdvтам был вопрос Does your deployed applications checks the Firebird registry keys to find where the client library (fbclient.dll) is located, when loading it? следовательно, вопрос был про штатную ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firebird Project\Firebird Server\Instances DefaultInstance=... Откуда ты взял, что инсталлер пишет что-то про клиентскую либу в реестр - неизвестно (тем более, что все вопросы инсталлятора ФБ уже давно известны). Максим Горький говаривал: «Да не о том думай, что спросили, а о том — для чего? Догадаешься — для чего, тогда и поймешь, как надо ответить.» Мне кацца, Arioch понял "для чего". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 03:31 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562434]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 172ms |
0 / 0 |