Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Всем привет. Такой вот интересный вопрос: Запускается прога, сама же проверяет наличие компонентов на машине клиента и их версию(так сложилось что нужно без сетапа), в случае необходимости копирую файлы в винду с помощью MoveFileEx и параметром MOVEFILE_DELAY_UNTIL_REBOOT, т.е. компоненты используемые в данный момент будут заменены после перезагрузки. Это все хорошо, но как их после перезагрузки зарегестрировать? Есть ли что нибудь подобное? Других параметров для той же функции не нашел, но чуствую что что то есть... Можно было бы регить при повторном запуске, но как в таком случае узнать какие компоненты зарегестрированы в данный момент? Точнее какя версия компонента.(если он вообще есть.) Спасибо. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 15:22 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Попробуй такой финт ушами: вместе с копированием запиши в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce значение regsvr32.exe свой_компонент.dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 16:18 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Вот балда. И как я ппро нее забыл. Да конечно, так будет работать. Но это ведь действительно "финт ушами" :) Вот о "Reg once" я не слышал :). Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 16:26 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Спасибо. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 16:26 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
А еще как нибудь? покрасивше? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 17:36 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
В logon-скриптах (т.е. до начала работы пользователя) проверяй соответствие версий, и, если нужно, выполняй копирование и регистрацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 17:50 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
2 ЛП В logon-скриптах (т.е. до начала работы пользователя) проверяй соответствие версий, и, если нужно, выполняй копирование и регистрацию. Собственно так и делаю(см. первый пост),проблема возникает при необходимости заменить компоненты которые в данный момент испоьзуются. Они то будут на месте только после ребута, вот тогда то их и нужно регить. Как проверить какая версия компонента на данный момент зарегистрирована? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 17:55 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
да при чем здесь ребут? как у тебя что-то используется до того как пользователь работу начал? или ты драйвера видеокарты на ходу меняешь? хотя... если пользователь быстро мышью кликает - то может и запустить твою недообносленную софтину.. Как проверить какая версия компонента на данный момент зарегистрирована? В реестре пошукать. Там номер версии прописывается - если компонент нормально регистрится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 18:02 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Да не у меня епть! Винда использует! За каким хреном я MOVEFILE_DELAY_UNTIL_REBOOT по твоему городил? Ниче он не запустит, софтина все проверяевт в начале, и без нужных версий не запустится. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 18:51 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Извини ЛП, погарачился. Нервный я сегодня. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 19:20 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
А как тебе такая идея - регистрировать компоненты не после финального копирования (после перезагрузки), а до? Т.е. скопировал файлы с помощью своей MoveFileEx, записал все что нужно в реестр (с нужными путями к компонентам), произошел ребут, все докопировалось - в то место, которое нужно, и которое уже прописано в реестре Особо красивым этот способ не назовешь, но прикольно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 20:05 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Если бы так работало то нафига их тогда вообще регистрировать? Скопировал и зашибись :) До копирования то их там нету, они валяются во временных папках, зарегестрированы будут те которые используются сейчас, короче не прокатит. получается единственный варинт с ключем RunOnce. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 20:20 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Да какая нафиг разница - есть там файлы, нет их там... Регистрация - это всего лишь запись нескольких значений в реестр. Ну нет еще файла (там, где он должен быть), ну и что теперь, реестр read-only стал?? Не умеешь руками регистрить - зарегистри файлы из любой директории, потом по реестру пробегись и этот путь (откуда регистрил) замени на тот, который в конечном итоге должен быть. Делов то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 22:08 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Знач так. Смотрим куда регятся компоненты: HKEY_CLASSES_ROOT\CLSID\{71A27032-C7D8-11D2-BEF8-525400DFB47A}\InprocServer32 HKEY_CLASSES_ROOT\TypeLib\{71A2702D-C7D8-11D2-BEF8-525400DFB47A}\1.0\0\win32 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{71A27032-C7D8-11D2-BEF8-525400DFB47A}\InprocServer32 Предлгаешь генерить GUID? Кстати информации о версиях я что-то не нашел. Но ведь где то же она должна быть? Форточка же не только наличие файла регистрирует но и версию. Вот это мне и нужно собственно. А теперь вернемся к тому с чего все началось. Какие этод метод имеет преимущества перед созданием ключа в RunОnce? :) Я вроде как спрашивал эээ, "покрасивше" :) Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 23:02 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Предлгаешь генерить GUID? нет. гуид у тебя уже в компоненте прописан регистришь его у себя на машине - смотришь что он в реестр понаписал - своей софтиной делаешь то же самое, но с другой путёй. Кстати информации о версиях я что-то не нашел На примере ADODB.Recordset: HKEY_CLASSES_ROOT\CLSID\{00000535-0000-0010-8000-00AA006D2EA4} содержит подключи InprocServer32, ProgID и VersionIndependentProgID. Если следовать канонам, то ProgID содержит информацию о версии (ADODB.Recordset.2.7), а VersionIndependentProgID - не содержит (ADODB.Recordset) Ну а что там твой компонент прописывает - это у тебя спросить надо :) Какие этод метод имеет преимущества перед созданием ключа в RunОnce? Только то, что ты не откладываешь регистрацию на потом, а делаешь ее сразу (хотя и руками). А в случае RunOnce - у тебя все какое-то отложенное получается... Копирование - отложенное, регистрация - отложенная... Может проще пользователя пристрелить, и пока новый народится - все проинсталять? Я вроде как спрашивал эээ, "покрасивше" :) А я уже сказал, что этот метод не красивый, а прикольный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2004, 23:51 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
На примере ADODB.Recordset: HKEY_CLASSES_ROOT\CLSID\{00000535-0000-0010-8000-00AA006D2EA4} содержит подключи InprocServer32, ProgID и VersionIndependentProgID. Если следовать канонам, то ProgID содержит информацию о версии (ADODB.Recordset.2.7), а VersionIndependentProgID - не содержит (ADODB.Recordset) проверял, не содержит. Собственно не мой компонент а куча разных либ в том числе и виндовских. Только то, что ты не откладываешь регистрацию на потом, а делаешь ее сразу (хотя и руками). А в случае RunOnce - у тебя все какое-то отложенное получается... Копирование - отложенное, регистрация - отложенная... Может проще пользователя пристрелить, и пока новый народится - все проинсталять? Пользователя то в любом случае пристрелить. А лучше заказщика :) Копирование отложенное т.к. по-другому никак. Форточка не даст менять системные файлы по горячему. А я уже сказал, что этот метод не красивый, а прикольный И чем же это он прикольный ? :) Мы же комсомольцы, легких путей не ищем :). Лучше уж пусть юзер разок ребутнятся чем я буду целый день трахатся тестируя эту лабуду :) Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 00:17 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Нет, Магнус, ты мне все-таки объясни вот что... Ну пусть ты умудрился на VB написать дрова для видеокарточки... хрен бы с ним :) Но откуда у тебя уверенность в том, что то, что прописано в RunOnce, стартует раньше, чем система начнет пытаться использовать еще незарегистрированные, но уже докопированные файлы??? В общем это уже от твоей софтины зависит - когда оно стартует, зачем оно стартует... Однако имхо более надежно (хоть и более геморойно) - в твоем случае выполнить ручную регистрацию. Вся необходимая информация у тебя для этого есть. Всей работы - по образу и подобию готовых веток реестра создать такие же, но с правильным путем. И ВСЕ. Над чем ты собрался трахаться в течении дня - я в непонятках... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 00:48 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
ПыСы Если уж ты так полагаешься на RunOnce - ну и запихни в него и копирование файлов, и их регистрацию. Причем копирование никакое не отложенное, а самое что ни на есть обычное. Но оно должно пройти - если ты уверен в том, что в этот момент файлы не используются. А если не уверен - то значит у тебя в этот момент уже обязана была произойти регистрация компонент, и тогда см. предыдущий пост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 00:58 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Слушайте, может не в тему но у меня в свете дисскусии родился вопрос: бывает после некоторых setup'ов комп перезагружается и потом в процессе загрузки , в самом начале появляется некая табличка с текстом типа: Система обновляет конфигурацию (или че-то подобное). Вот мне интересно, какие-то изменения вызывают в системы программы, что после них винда после перезагрузке вначале занимается таким обновлением, что никуда больше не грузится пока все не отработает и может есть вариант использовать такой же ход для обсуждаемой проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 12:15 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
для этого, кажется, надо копать в сторону сервиса Windows Installer (и вообще майкрософт рекомендует все инсталяшки через этот сервис делать) З.Ы. Кажется Магнусу это не сильно поможет. У него и с обычным сетупом почему-то не сложилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 12:52 |
|
||
|
Ретистрация компонентов после перезагрузки
|
|||
|---|---|---|---|
|
#18+
Дело в следующем. Эта софтина вообще должна была делаться не на ВБ, а на чем нибудь типа Macromedia Director. ИМХо. Диск. Просто диск, типа мультимедиа. Какталог норм. Кроме экзешника ничего не хотят. Даже авторана. "программирование - интелектуальная проституция, цель которой полное удовлетворение клиента, воплощение в программные коды его тупорылых и бляцких идей."(с)папа акуз Лучше выразить просто невозможно. :) Софтина запускается только с диска. Причем база(акцесс) валяется на винте :), копируется туда при первом запуске. Это сделано чтобы иметь возможность обновления. Типа юзер где то наколупает новую базу, запускает софтину, жмет кнопулину, указывает путь и зашибись. По большей части необходимо обновлять виндовские либы, с пяток моих и третьих. В принципе то все уже работает. RunOnce обрабатывается сразу после логина, в него ИМХО и вышеупомянутый инсталлер все пихает, для пущей уверенности можно использовать RunServicesOnce, этот обрабатывается раньше всех, до логина. 2 ЛП Если б я умофрился на васике написать дрова, этобыло бы СВЕРШЕНИЕ :) Я ж не против ручной регистрации.Только вто не нашел я ВСЕХ необходимых ключей. Можно конечно че нить зарегить и глянуть что и куда. Но это уже вне бюджета. Эта софтина вообще как довесок к подобной системе внедренной в веб проэкт для того же клиента. Так что остальные эксперименты, уже дома для себя :). Вопрос переходит в стадию чисто академического интереса. :) Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2004, 15:56 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32461547&tid=2169855]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 414ms |

| 0 / 0 |
