Inno setup и FireBird
Модераторы: kdv, Alexey Kovyazin
Inno setup и FireBird
Добрый день.
Подскажите как с помощью Inno Setup проверить установлена ли на машине клиента FB, определить версию FB, проверить пароль SYSDBA и наличие пользователя?
Наверняка кто то сталкивался с подобным. Поделитесь опытом решения возникшей проблемы.
Подскажите как с помощью Inno Setup проверить установлена ли на машине клиента FB, определить версию FB, проверить пароль SYSDBA и наличие пользователя?
Наверняка кто то сталкивался с подобным. Поделитесь опытом решения возникшей проблемы.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Inno setup и FireBird
Лично я никогда с такой проблемой не сталкивался, поскольку наличие и версия FB у клиента гарантируются одной строчкой в системных требованиях моего приложения.
И главное правило - ни в коем случае приложению не требуется знать пароль пользователя SYSDBA.
И главное правило - ни в коем случае приложению не требуется знать пароль пользователя SYSDBA.
Re: Inno setup и FireBird
Ну приложению пароль SYSDBA и не нужен. Пароль нужен SETUP что бы добавить пользователя под которым можно будет войти в систему.
Это не правильно что для работы приложения, надо еще доставить кучу софта. Есть 1 SETUP и он может поставить все что ему надо для работы.
Это не правильно что для работы приложения, надо еще доставить кучу софта. Есть 1 SETUP и он может поставить все что ему надо для работы.
Re: Inno setup и FireBird
в исходниках FB есть скрипт inno setup, его берите и исследуйте.
http://sf.net/projects/firebird
дальше в cvs, browse, и т.п.
http://sf.net/projects/firebird
дальше в cvs, browse, и т.п.
Re: Inno setup и FireBird
Исследовал, но там нет проверки пароля и пользователя. Там только запущена служба или нет. И если нет то накатывает сервер и все. Тут немного не так желательно.
Re: Inno setup и FireBird
то есть, вам желательно разжевать и в рот положить?
кстати, а почему нельзя в своем инсталляторе уже СРАЗУ иметь в security2.fdb готового пользователя? Зачем вот этот изврат, чтобы инсталлятор коннектился к тут же установленному серверу, создавал пользователя?
Вы же можете это сделать и в приложении, обнаружив, что пользователя нет.
кстати, а почему нельзя в своем инсталляторе уже СРАЗУ иметь в security2.fdb готового пользователя? Зачем вот этот изврат, чтобы инсталлятор коннектился к тут же установленному серверу, создавал пользователя?
Вы же можете это сделать и в приложении, обнаружив, что пользователя нет.
какой-то поток сознания. Вы про какую "кучу софта", и кто этот софт вас заставляет ставить?Это не правильно что для работы приложения, надо еще доставить кучу софта. Есть 1 SETUP и он может поставить все что ему надо для работы.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Inno setup и FireBird
Ну, типа сначала надо поставить Windows. Но эту задачу он, по всей видимости, уже решил.
Аффтар, сервер ставится на сервер, клиентское приложение ставится на рабочую станцию. Запихать их в один инсталлятор, конечно, можно, но нафиг не нужно.
Аффтар, сервер ставится на сервер, клиентское приложение ставится на рабочую станцию. Запихать их в один инсталлятор, конечно, можно, но нафиг не нужно.
Re: Inno setup и FireBird
Давайте по порядку.
В приложении конечно можно, конечно можно и от пользователя требовать определенный знания. Но это не правильно.
Проблему решил. Написал DLL которая все проверяет и делает (что тоже не совсем правильно). Хотел спросить у умных людей может есть более изящный метод, какие то стандартные проверки. Видимо нет или никто этим вопросом не задавался. Если есть какие то мысли, то буду рад если поделитесь (т.к. тут есть действительно опытные и умные парни, которые очень подробно отвечают и указывают хорошие ссылки где можно посмотреть)
Не могу понять одного, почему если человек обратился за помощью то он обязательно глупее отвечающих?
-- т.е. получается у пользователя уже стоит сервер, заведены пользователи, а я с чего то решил что имею право все это не учитывать а заменить файл с пользователями своим файлом с одним пользователем. Вот это подход.kdv писал(а):кстати, а почему нельзя в своем инсталляторе уже СРАЗУ иметь в security2.fdb готового пользователя?
В приложении конечно можно, конечно можно и от пользователя требовать определенный знания. Но это не правильно.
-- не надо недооценивать автором вопросов. Ответа так и не последовало, а вот остроты уже есть. Нужно все это для удобство конечного пользователя.Dimitry Sibiryakov писал(а):Ну, типа сначала надо поставить Windows. Но эту задачу он, по всей видимости, уже решил.
Проблему решил. Написал DLL которая все проверяет и делает (что тоже не совсем правильно). Хотел спросить у умных людей может есть более изящный метод, какие то стандартные проверки. Видимо нет или никто этим вопросом не задавался. Если есть какие то мысли, то буду рад если поделитесь (т.к. тут есть действительно опытные и умные парни, которые очень подробно отвечают и указывают хорошие ссылки где можно посмотреть)
Не могу понять одного, почему если человек обратился за помощью то он обязательно глупее отвечающих?
Re: Inno setup и FireBird
получается, что у пользователя уже стоит сервер, а вы ставите еще один? Кстати, вначале вопрос был про установку клиента и приложения, и в этот момент добавления пароля.-- т.е. получается у пользователя уже стоит сервер, заведены пользователи, а я с чего то решил что имею право все это не учитывать а заменить файл с пользователями своим файлом с одним пользователем.
это как раз правильно для Inno Setup. Никаких других "изящных" методов для него нет.Написал DLL которая все проверяет и делает (что тоже не совсем правильно)
так обратился жеесли человек обратился за помощью то он обязательно глупее отвечающих?
Re: Inno setup и FireBird
Обратился, не спорю. Вот как раз и проблема в том что у пользователя может уже стоять FB. Если не стоит то тут все просто. А если стоит то тогда мне уже ставить не надо, а надо только завести нужного пользователя. Звучит просто, но реализация не так проста.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Inno setup и FireBird
"Обратился за помощью" - "не смог найти решения самостоятельно" - "глупее". Разве эта цепочка не очевидна?
Реализация проста. В две строчки:
Реализация проста. В две строчки:
Заодно у устанавливающего твою поделку сисадмина будет повод поржать. Не надо ходить на ithappens или The Daily WTF.Системные требования:
1) Установленный сервер Firebird версии Х.Х и выше
2) Зарегистрированный на этом сервере пользователь Имярек с паролем ХХХХХ
Re: Inno setup и FireBird
Может это над твоими поделка ржут. И если ты привык решать проблемы за счет админов или кого то еще так как сам не в состоянии написать хороший SETUP то мне жаль твоих пользователей. Я написал что решение нашел сам, а от тебя только "предложения", а решений то нет. И предложения сводятся к тому что бы проблему решил кто то другой. А я не хочу скачивая программу, к ней скачивать что то еще. Шире надо думать!!!
Re: Inno setup и FireBird
Привет.
В свое время я решал аналогичную задачу. После множества вариантов, я остановился на самом простом: из Setup запускаю свою утилитку, которая определяет версию сервера и запускает его gsec от имени sysdba с паролем по умолчанию и параметрами -add и -pw для добавления моего пользователя.
Соображения, почему делаю именно так следующие:
1) У меня есть пользователи, которые работают на FB 1.0.3. Для этой версии нет Services API, приходится использовать gsec.
2) Половина пользователей, у которых есть установленный FB не меняет пароль sysdba.
3) Спрашивать пароль sysdba в диалоге Setup бестолку, т.к. программу может устанавливать кто-угодно и, если это не сисадмин, знающий пароль sysdba, то такой вопрос скорее поставит пользователя в ступор, чем поможет.
4) Если сервера нет или нестандартный пароль sysdba, то нужного пользователя не будет и моя программа при соединении с БД выдаст ошибку. Вот тогда я отсылаю к readme с требованиями, в котором указано, что должен быть сервер FB и такой-то пользователь с таким-то паролем.
5) Как вариант, если мой пользователь не устраивает, то укажите в параметрах соединения с БД в моей программе своего пользователя со своим паролем.
В свое время я решал аналогичную задачу. После множества вариантов, я остановился на самом простом: из Setup запускаю свою утилитку, которая определяет версию сервера и запускает его gsec от имени sysdba с паролем по умолчанию и параметрами -add и -pw для добавления моего пользователя.
Соображения, почему делаю именно так следующие:
1) У меня есть пользователи, которые работают на FB 1.0.3. Для этой версии нет Services API, приходится использовать gsec.
2) Половина пользователей, у которых есть установленный FB не меняет пароль sysdba.
3) Спрашивать пароль sysdba в диалоге Setup бестолку, т.к. программу может устанавливать кто-угодно и, если это не сисадмин, знающий пароль sysdba, то такой вопрос скорее поставит пользователя в ступор, чем поможет.
4) Если сервера нет или нестандартный пароль sysdba, то нужного пользователя не будет и моя программа при соединении с БД выдаст ошибку. Вот тогда я отсылаю к readme с требованиями, в котором указано, что должен быть сервер FB и такой-то пользователь с таким-то паролем.
5) Как вариант, если мой пользователь не устраивает, то укажите в параметрах соединения с БД в моей программе своего пользователя со своим паролем.
Re: Inno setup и FireBird
Я так и делаю при условии что сервер не стоит и я его ставлю из SETUP с программой и потом добавляю пользователя.checker писал(а): gsec от имени sysdba с паролем по умолчанию и параметрами -add и -pw для добавления моего пользователя.
Вся сложность с нестандартным паролем. Но то что такой вопрос может поставить пользователя в ступор -- это верно. Но с другой стороны если он не знает пароль SYSDBA то он по сути не сможет работать с программой т.к. он не сможет завести пользователя и т.д. И есть ли смысл тогда продолжать установку?
За ответ спасибо. Ответ хороший.
Re: Inno setup и FireBird
Ну, я продолжаю. Программа то все равно запустится, а потом выдаст ошибку открытия БД со стандартным текстом "Your user name and password are not defined. Ask your database administrator to set up a Firebird login". А дальше в readme и в документации к программе (требование ГОСТ) есть пункт со списком возможных ошибок, в котором я и пишу, что раз такой текст, то "надо добавить учетную запись СУБД вручную, как это описано в пункте Установка системы..."Matveih1 писал(а):Но с другой стороны если он не знает пароль SYSDBA то он по сути не сможет работать с программой т.к. он не сможет завести пользователя и т.д. И есть ли смысл тогда продолжать установку?
Re: Inno setup и FireBird
Согласен с тобой. Так и сделаю. Немного перемудрил с логикой SETUP. Хотя уже и работает. и пароль узнает и добавляет.
Ну ломать не строить.
Ну ломать не строить.
Re: Inno setup и FireBird
Эээ... Ты сумел, не спрашивая пользователя, как-то получить текущий пароль SYSDBA? А, значит, сможешь и сделать это и для любого другого пользователя Firebird? Или все таки просишь ввести пароль SYSDBA руками?Matveih1 писал(а):Хотя уже и работает. и пароль узнает и добавляет.
Re: Inno setup и FireBird
Спрашивал у пользователя и проверял. Но теперь от этого отказался. Хотя со временем может и вернусь