Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.08.28;
Скачать: 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 вся ветка

Текущий архив: 2011.08.28;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.013 c
2-1305445442
maksim
2011-05-15 11:44
2011.08.28
3 потока и одна переменная


1-1265353174
borispnz
2010-02-05 09:59
2011.08.28
Передача в процедуру параметра разных типов


2-1305453738
обморок
2011-05-15 14:02
2011.08.28
самое длинное слово


11-1233209905
s_arty
2009-01-29 09:18
2011.08.28
проблема с www.kolnmck.ru


15-1304632321
R_R
2011-05-06 01:52
2011.08.28
Какой самый простой строковый алгоритм?