Вниз
Скачать: CL | DM;

Не могу записать библиотеку   Найти похожие ветки 

← →
Tornado   (2010-01-12 10:21) [0]

Есть программа, с нее идет обмен данными с сервером Firebird, по локальной сети. Для работы с этис сервером используется библиотека GDS32.DLL, которая сидит в system32. Я включил в состав дистрибутива эту библиотеку, но если пользователь на компютере не администратор (у нас такое сплошь и рядом) - то инсталлятор (Inno Setup использую) не может записать эту библиотеку в system32. А без нее не работает программа, пишет не могу загрузить GDS32.DLL при попытке что-либо отправить на сервер (ну допустим запрос на вставку или выборку). Вся работа идет через компоненты FIBPlus.

Что можно сделать?


← →
Медвежонок Пятачок ©   (2010-01-12 10:29) [1]

Ставить программу из под администратора.

У вас же именно для этого рядовые пользователи лишены админских прав.
Они не должны ставить софт.


← →
Tornado   (2010-01-12 10:32) [2]


> Медвежонок Пятачок ©   (12.01.10 10:29) [1]

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


← →
Медвежонок Пятачок ©   (2010-01-12 10:37) [3]

Выход конечно, но пользователей очень много а администраторов очень мало ))

Ну и какого тогда вы спрашивается сами себе гемор создали?
Чего ради у вас пользователи не имеют прав?


← →
Медвежонок Пятачок ©   (2010-01-12 10:40) [4]

Пока админ дойдет до нужного юзера

а админ у вас слышал про то что у вас есть сеть и что по сети можно копировать файлы если имеешь нужные полномочия?

или он у вас просто любит ходить по пользователям?


← →
Медвежонок Пятачок ©   (2010-01-12 10:42) [5]

то инсталлятор (Inno Setup использую) не может записать эту библиотеку в system32

пусть записывает ее в папку с программой


← →
ANB   (2010-01-12 10:50) [6]


> пусть записывает ее в папку с программой

И это будет лучшим вариантом.


← →
Медвежонок Пятачок ©   (2010-01-12 10:58) [7]

И это будет лучшим вариантом.

<Цитата>

Если не считать что это извращение самого смысла длл.
:)
Билгейц зачем придумал это? Лежит один код в одном месте. Все юзают.


← →
Tornado   (2010-01-12 11:07) [8]


> Медвежонок Пятачок ©   (12.01.10 10:42) [5]

Как же программа найдет его потом? Ведь она по всей видимости ищет его именно в system32?


← →
Медвежонок Пятачок ©   (2010-01-12 11:09) [9]

Ведь она по всей видимости ищет его именно в system32?
Она не ищет ничего.
длл ищет виноуз.


← →
Sergey13 ©   (2010-01-12 11:17) [10]

Может через домен можно как всем (или нужным) пользователям вкрячить ее в нужное место? И убрать из инсталятора.


← →
Tornado   (2010-01-12 11:23) [11]


> Медвежонок Пятачок ©   (12.01.10 11:09) [9]

да я понял, не так выразился....windows найдет эту DLL если я положу ее в каталог с программой?


← →
turbouser ©   (2010-01-12 11:35) [12]


> Tornado   (12.01.10 11:07) [8]


> Как же программа найдет его потом?

А разве в фибах нельзя указать путь к библиотеке? TpFIBDatabase.LibraryName для кого придумали?


← →
Tornado   (2010-01-12 11:57) [13]


> turbouser ©   (12.01.10 11:35) [12]

О точно, про это я и забыл совсем, спасибо!


← →
Медвежонок Пятачок ©   (2010-01-12 12:18) [14]

О точно, про это я и забыл совсем, спасибо!

Вспомнишь, когда встретится машина на которой софт ставился из под админа и длл легла в system32


← →
Tornado   (2010-01-12 12:30) [15]


> Медвежонок Пятачок ©   (12.01.10 12:18) [14]

И что будет?


← →
Медвежонок Пятачок ©   (2010-01-12 12:54) [16]

а что будет, если в настройках прописан абсолютный путь к либе, а она по этому пути не лежит?
будет то же самое что и сейчас у тебя происходит


← →
turbouser ©   (2010-01-12 12:56) [17]


> Медвежонок Пятачок ©   (12.01.10 12:54) [16]

if filexists()


← →
Медвежонок Пятачок ©   (2010-01-12 13:13) [18]

if filexists()

И чего дальше?


← →
turbouser ©   (2010-01-12 13:17) [19]


> Медвежонок Пятачок ©   (12.01.10 13:13) [18]

:)
var S:string;
S:= ExtractFilePat(Application.ExeName)+"GDS32.DLL";
with pFIBDatabase do
if fileexists(S) then
LibraryName := S else
LibraryName := "GDS32.DLL";


← →
Медвежонок Пятачок ©   (2010-01-12 13:28) [20]

И в чем прикол этого кода?

в параметрах коннекшена скажем написано "gds32.dll"

либа может лежать либо в систем32 либо в папке с программой (две версии инсталлятора)

что именно не будет работать при отсутствиии мегакода из [19] ?


← →
Anatoly Podgoretsky ©   (2010-01-12 15:09) [21]

> Tornado  (12.01.2010 10:21:00)  [0]

Сделать как положено, установка программ прерогатива администратора.


← →
Anatoly Podgoretsky ©   (2010-01-12 15:11) [22]

> Tornado  (12.01.2010 10:32:02)  [2]

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


← →
Anatoly Podgoretsky ©   (2010-01-12 15:13) [23]

> ANB  (12.01.2010 10:50:06)  [6]

Лучшим вариантом будет инсталятор в виде .msi и централизованая установка через политики.


← →
turbouser ©   (2010-01-12 16:19) [24]


> Медвежонок Пятачок ©   (12.01.10 13:28) [20]

Вообще-то в system32 может лежать совсем не той версии gds32..


← →
Медвежонок Пятачок ©   (2010-01-12 16:54) [25]

Вообще-то в system32 может лежать совсем не той версии gds32..

И как же FileExists может помочь в этой беде?


← →
Виталий Панасенко(дом)   (2010-01-12 22:02) [26]

А вообще, их (gds32.dll)может быть масса... Вот тут, кто первый, тот и папа!..:-)
А вообще, действительно непонятно, набуя тогда админы? Или ты сам из них?


← →
Tornado   (2010-01-13 08:37) [27]


> Медвежонок Пятачок ©   (12.01.10 12:54) [16]

Она там будет лежать )))


← →
Tornado   (2010-01-13 08:41) [28]


> Виталий Панасенко(дом)   (12.01.10 22:02) [26]
Или ты сам из них?

Бог с тобой ))) Нет, я инсталлятор сделал просто и столкнулся с этой проблемой. Ну вообщем внимаю советам бывалых, отдал дистриб админам, пусть сами ставят ))


← →
ANB   (2010-01-13 15:12) [29]


> Если не считать что это извращение самого смысла длл.
> :)
> Билгейц зачем придумал это? Лежит один код в одном месте.
>  Все юзают.

А Рихтер назвал эту идею плохой ("Ад DLL") :)


← →
sniknik ©   (2010-01-13 17:04) [30]

> А Рихтер назвал эту идею плохой ("Ад DLL") :)
если бы оно работало так как задумывалось... 1 dll и все ее используют, а так как в этой ветке одна лежит в реестре, и каждая программа свою копию таскает, т.к. привязана к версии, или другим причинам, вод и получается ад, куча одноименных dll и ни с одной нормально не работает, в общем сами себе ад создаем...


← →
Anatoly Podgoretsky ©   (2010-01-13 17:20) [31]

> ANB  (13.01.2010 15:12:29)  [29]

А другие идеи тоже не лучше


← →
ANB   (2010-01-13 17:44) [32]


> А другие идеи тоже не лучше

Пишу толстые экзешники и не парюсь. DLL только для хуков.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.005 c
2-1305291291
AlekVolsk
2011-05-13 16:54
2011.08.28
Вынос модуля данных в DLL


15-1304540995
Юрий
2011-05-05 00:29
2011.08.28
С днем рождения ! 5 мая 2011 четверг


15-1304851360
Palladin
2011-05-08 14:42
2011.08.28
Куда девать нечитабельные и старые CD/DVD ?


15-1304595679
И. Павел
2011-05-05 15:41
2011.08.28
чтение системных журналов сообщений


2-1305542929
Соня
2011-05-16 14:48
2011.08.28
Delphi. Соединение с БД MS SQL Server




   Наверх