Bug 2823

Summary: Вносить состояние SELTA в системный реестр
Product: SELTA@Etersoft Reporter: Шильников Андрей <shan>
Component: Графическая утилита SeltaAssignee: Станислав Коробейников <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 программа вносит изменения в пользовательский реестр. Такой подход не всегда удобен для конечного пользователя. Поэтому есть предложение сделать выбор запуска (=> читать как изменения реестра) в графической части, т.е. при запуске иметь выбор что менять: реестр пользователя или общий системный.
Comment 1 Vitaly Lipatov 2008-11-05 19:10:36 MSK
Насколько я знаю, SELTA (Графика) не под администратором вообще не запускается (кроме как в Wine, потому что у нас нет проверок на доступность реестра),
так что выбор по умолчанию должен стоять на системном реестре.
Comment 2 Станислав Коробейников 2008-12-04 18:42:53 MSK
Структуру классов, которые будут работать с реестром набросал. 
Изменил под нее gui/selta.cpp/ и начал gui/inslall.cpp. В остальных файлах не столько менять.
Еще ничего не коммитил. 
Comment 3 Vitaly Lipatov 2008-12-04 19:02:37 MSK
Как мы обсуждали (и не записали!), надо
- читать состояние из пользовательского реестра, если в нём нет ветки - тогда из системного
- записывать сразу в оба реестра

Comment 4 Станислав Коробейников 2008-12-05 16:54:20 MSK
(In reply to comment #3)
> Как мы обсуждали (и не записали!), надо
> - читать состояние из пользовательского
> реестра, если в нём нет ветки - тогда из
> системного
> - записывать сразу в оба реестра
> 
Да именно так я и понял. Все так и сделал, закоммитил.
Читает и пишет в обе ветки, если может хотя бы в одну все нормально. 

Надо будет потестировать. 

Comment 5 Станислав Коробейников 2008-12-08 13:07:17 MSK
Выяснил что не собирается. В некоторых местах из за неправильных путей в библиотеке. 
Но в obdc-pg и odbcbcp из-за того, что они компилятся с помощью gcc. Надо подумать, как компилить. Пока тупо добавил в эти файлы по функции. 
Так, что все собирается. 
Comment 6 Станислав Коробейников 2008-12-08 18:25:04 MSK
Пока собрать не смог. 
собирал odbc-pg:
Если все собирать gcc:
вываливаются ошибки на class и т.п.

если все собирать g++, вываливается куча ошибок типа
invalid conversion from `const SQLCHAR*' to `const char*'

половину собрал gcc, половину g++. 
Cannot export SQLDummyOrdinal: symbol not defined

Comment 7 Vitaly Lipatov 2008-12-08 18:34:37 MSK
Если ты обращаешься к C-коду из C++, нужно использовать в заголовочном файле для определения прототипа C-функций конструкцию
#ifdef __cplusplus
extern "C"
{
#endif
...
...прототип
...
#ifdef __cplusplus
}
#endif

И вообще не надо было тратить время на это, а спросить меня.
Comment 8 Станислав Коробейников 2008-12-10 17:46:51 MSK
Сделал одну функцию на C. Засунул ее в
отдельный файл. 

Можно не за большое время все переделать на
С.

Исправил несколько ошибок и все работает и под wine и под win2k.
Comment 9 Станислав Коробейников 2008-12-15 17:54:35 MSK
Сделал тестилку работы с реестром. Все работает. Надо будет погонять с 1с. 
Comment 10 Станислав Коробейников 2008-12-15 17:58:08 MSK
Назрел вопрос по баге.
В настояещее время она читает и пишет в две ветки реестра. 
Но, если один человек установил, другой запустил, а у него нет доступа в HKLM все равно записывать нечего не  сможет, так как у него нет нужных ключей. 
Можно сделать так, что бы при записи проверяла, есть ли ключ, и создавала его. 
Comment 11 Vitaly Lipatov 2008-12-15 18:16:44 MSK
(In reply to comment #10)
> Но, если один человек установил, другой
> запустил, а у него нет доступа в HKLM все
> равно записывать нечего не  сможет, так как
> у него нет нужных ключей. 
1. Каких нужных ключей у него нет?
2. Сможет записывать в пользовательский реестр.


Comment 12 Станислав Коробейников 2008-12-16 09:47:31 MSK
(In reply to comment #11)
> (In reply to comment #10)
> > Но, если один человек установил, другой
> > запустил, а у него нет доступа в HKLM все
> > равно записывать нечего не  сможет, так как
> > у него нет нужных ключей. 
> 1. Каких нужных ключей у него нет?
Я имел ввиду соответствующей ветки(HKKU-Etersoft-Selta-Info). Но можно быстренько сделать, что бы создавала.
> 2. Сможет записывать в пользовательский
> реестр.

Comment 13 Vitaly Lipatov 2008-12-16 11:43:12 MSK
Вообще лучше пусть он пока не может управлять локальными ветками.
Нет ветки - ну и не может менять состояние.
Comment 14 Vitaly Lipatov 2014-09-11 18:47:53 MSK
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.