При запуске SELTA программа вносит изменения в пользовательский реестр. Такой подход не всегда удобен для конечного пользователя. Поэтому есть предложение сделать выбор запуска (=> читать как изменения реестра) в графической части, т.е. при запуске иметь выбор что менять: реестр пользователя или общий системный.
Насколько я знаю, 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. Сможет записывать в пользовательский > реестр.
Вообще лучше пусть он пока не может управлять локальными ветками. Нет ветки - ну и не может менять состояние.
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.