|
поиск 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 |
|
|
start [/forum/topic.php?fid=40&tid=1562434]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 398ms |
0 / 0 |