Summary: | Вносить состояние SELTA в системный реестр | ||
---|---|---|---|
Product: | SELTA@Etersoft | Reporter: | Шильников Андрей <shan> |
Component: | Графическая утилита Selta | Assignee: | Станислав Коробейников <stas> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | minor | ||
Priority: | P4 | CC: | goga, lav, shan |
Version: | 1.0.4 | ||
Target Milestone: | версия 1.0.5 | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 2637 |
Description
Шильников Андрей
2008-11-05 18:54:09 MSK
Насколько я знаю, SELTA (Графика) не под администратором вообще не запускается (кроме как в Wine, потому что у нас нет проверок на доступность реестра), так что выбор по умолчанию должен стоять на системном реестре. Структуру классов, которые будут работать с реестром набросал. Изменил под нее gui/selta.cpp/ и начал gui/inslall.cpp. В остальных файлах не столько менять. Еще ничего не коммитил. Как мы обсуждали (и не записали!), надо - читать состояние из пользовательского реестра, если в нём нет ветки - тогда из системного - записывать сразу в оба реестра (In reply to comment #3) > Как мы обсуждали (и не записали!), надо > - читать состояние из пользовательского > реестра, если в нём нет ветки - тогда из > системного > - записывать сразу в оба реестра > Да именно так я и понял. Все так и сделал, закоммитил. Читает и пишет в обе ветки, если может хотя бы в одну все нормально. Надо будет потестировать. Выяснил что не собирается. В некоторых местах из за неправильных путей в библиотеке. Но в obdc-pg и odbcbcp из-за того, что они компилятся с помощью gcc. Надо подумать, как компилить. Пока тупо добавил в эти файлы по функции. Так, что все собирается. Пока собрать не смог. собирал odbc-pg: Если все собирать gcc: вываливаются ошибки на class и т.п. если все собирать g++, вываливается куча ошибок типа invalid conversion from `const SQLCHAR*' to `const char*' половину собрал gcc, половину g++. Cannot export SQLDummyOrdinal: symbol not defined Если ты обращаешься к C-коду из C++, нужно использовать в заголовочном файле для определения прототипа C-функций конструкцию #ifdef __cplusplus extern "C" { #endif ... ...прототип ... #ifdef __cplusplus } #endif И вообще не надо было тратить время на это, а спросить меня. Сделал одну функцию на C. Засунул ее в отдельный файл. Можно не за большое время все переделать на С. Исправил несколько ошибок и все работает и под wine и под win2k. Сделал тестилку работы с реестром. Все работает. Надо будет погонять с 1с. Назрел вопрос по баге. В настояещее время она читает и пишет в две ветки реестра. Но, если один человек установил, другой запустил, а у него нет доступа в HKLM все равно записывать нечего не сможет, так как у него нет нужных ключей. Можно сделать так, что бы при записи проверяла, есть ли ключ, и создавала его. (In reply to comment #10) > Но, если один человек установил, другой > запустил, а у него нет доступа в HKLM все > равно записывать нечего не сможет, так как > у него нет нужных ключей. 1. Каких нужных ключей у него нет? 2. Сможет записывать в пользовательский реестр. (In reply to comment #11) > (In reply to comment #10) > > Но, если один человек установил, другой > > запустил, а у него нет доступа в HKLM все > > равно записывать нечего не сможет, так как > > у него нет нужных ключей. > 1. Каких нужных ключей у него нет? Я имел ввиду соответствующей ветки(HKKU-Etersoft-Selta-Info). Но можно быстренько сделать, что бы создавала. > 2. Сможет записывать в пользовательский > реестр. Вообще лучше пусть он пока не может управлять локальными ветками. Нет ветки - ну и не может менять состояние. Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять. |