Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ретистрация компонентов после перезагрузки / 21 сообщений из 21, страница 1 из 1
29.03.2004, 15:22
    #32460868
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Всем привет.
Такой вот интересный вопрос:
Запускается прога, сама же проверяет наличие компонентов на машине клиента и их версию(так сложилось что нужно без сетапа), в случае необходимости копирую файлы в винду с помощью MoveFileEx и параметром
MOVEFILE_DELAY_UNTIL_REBOOT, т.е. компоненты используемые в данный момент будут заменены после перезагрузки.
Это все хорошо, но как их после перезагрузки зарегестрировать? Есть ли что нибудь подобное? Других параметров для той же функции не нашел, но чуствую что что то есть...

Можно было бы регить при повторном запуске, но как в таком случае узнать какие компоненты зарегестрированы в данный момент? Точнее какя версия компонента.(если он вообще есть.)

Спасибо.

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 16:18
    #32461023
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Попробуй такой финт ушами: вместе с копированием запиши в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce значение regsvr32.exe свой_компонент.dll
...
Рейтинг: 0 / 0
29.03.2004, 16:26
    #32461047
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Вот балда. И как я ппро нее забыл. Да конечно, так будет работать.
Но это ведь действительно "финт ушами" :)
Вот о "Reg once" я не слышал :).

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 16:26
    #32461048
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Спасибо.

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 17:36
    #32461225
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
А еще как нибудь? покрасивше?

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 17:50
    #32461253
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
В logon-скриптах (т.е. до начала работы пользователя) проверяй соответствие версий, и, если нужно, выполняй копирование и регистрацию.
...
Рейтинг: 0 / 0
29.03.2004, 17:55
    #32461264
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
2 ЛП
В logon-скриптах (т.е. до начала работы пользователя) проверяй соответствие версий, и, если нужно, выполняй копирование и регистрацию.
Собственно так и делаю(см. первый пост),проблема возникает при необходимости заменить компоненты которые в данный момент испоьзуются.
Они то будут на месте только после ребута, вот тогда то их и нужно регить.

Как проверить какая версия компонента на данный момент зарегистрирована?

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 18:02
    #32461285
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
да при чем здесь ребут?
как у тебя что-то используется до того как пользователь работу начал? или ты драйвера видеокарты на ходу меняешь?
хотя... если пользователь быстро мышью кликает - то может и запустить твою недообносленную софтину..

Как проверить какая версия компонента на данный момент зарегистрирована?
В реестре пошукать. Там номер версии прописывается - если компонент нормально регистрится.
...
Рейтинг: 0 / 0
29.03.2004, 18:51
    #32461368
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Да не у меня епть! Винда использует! За каким хреном я MOVEFILE_DELAY_UNTIL_REBOOT по твоему городил?

Ниче он не запустит, софтина все проверяевт в начале, и без нужных версий не запустится.

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 19:20
    #32461396
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Извини ЛП, погарачился.
Нервный я сегодня.

Magnus
...
Рейтинг: 0 / 0
29.03.2004, 20:05
    #32461431
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
А как тебе такая идея - регистрировать компоненты не после финального копирования (после перезагрузки), а до? Т.е. скопировал файлы с помощью своей MoveFileEx, записал все что нужно в реестр (с нужными путями к компонентам), произошел ребут, все докопировалось - в то место, которое нужно, и которое уже прописано в реестре
Особо красивым этот способ не назовешь, но прикольно :)
...
Рейтинг: 0 / 0
29.03.2004, 20:20
    #32461440
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Если бы так работало то нафига их тогда вообще регистрировать? Скопировал и зашибись :)
До копирования то их там нету, они валяются во временных папках, зарегестрированы будут те которые используются сейчас, короче не прокатит.
получается единственный варинт с ключем RunOnce.



Magnus
...
Рейтинг: 0 / 0
29.03.2004, 22:08
    #32461513
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Да какая нафиг разница - есть там файлы, нет их там...
Регистрация - это всего лишь запись нескольких значений в реестр. Ну нет еще файла (там, где он должен быть), ну и что теперь, реестр read-only стал??
Не умеешь руками регистрить - зарегистри файлы из любой директории, потом по реестру пробегись и этот путь (откуда регистрил) замени на тот, который в конечном итоге должен быть. Делов то...
...
Рейтинг: 0 / 0
29.03.2004, 23:02
    #32461530
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Знач так. Смотрим куда регятся компоненты:
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
...
Рейтинг: 0 / 0
29.03.2004, 23:51
    #32461547
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Предлгаешь генерить 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 - у тебя все какое-то отложенное получается... Копирование - отложенное, регистрация - отложенная... Может проще пользователя пристрелить, и пока новый народится - все проинсталять?

Я вроде как спрашивал эээ, "покрасивше" :)
А я уже сказал, что этот метод не красивый, а прикольный
...
Рейтинг: 0 / 0
30.03.2004, 00:17
    #32461556
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
На примере ADODB.Recordset:
HKEY_CLASSES_ROOT\CLSID\{00000535-0000-0010-8000-00AA006D2EA4}
содержит подключи InprocServer32, ProgID и VersionIndependentProgID. Если следовать канонам, то ProgID содержит информацию о версии (ADODB.Recordset.2.7), а VersionIndependentProgID - не содержит (ADODB.Recordset)

проверял, не содержит. Собственно не мой компонент а куча разных либ в том числе и виндовских.



Только то, что ты не откладываешь регистрацию на потом, а делаешь ее сразу (хотя и руками). А в случае RunOnce - у тебя все какое-то отложенное получается... Копирование - отложенное, регистрация - отложенная... Может проще пользователя пристрелить, и пока новый народится - все проинсталять?
Пользователя то в любом случае пристрелить. А лучше заказщика :)
Копирование отложенное т.к. по-другому никак. Форточка не даст менять системные файлы по горячему.

А я уже сказал, что этот метод не красивый, а прикольный
И чем же это он прикольный ? :)
Мы же комсомольцы, легких путей не ищем :).
Лучше уж пусть юзер разок ребутнятся чем я буду целый день трахатся тестируя эту лабуду :)



Magnus
...
Рейтинг: 0 / 0
30.03.2004, 00:48
    #32461570
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Нет, Магнус, ты мне все-таки объясни вот что...
Ну пусть ты умудрился на VB написать дрова для видеокарточки... хрен бы с ним :)
Но откуда у тебя уверенность в том, что то, что прописано в RunOnce, стартует раньше, чем система начнет пытаться использовать еще незарегистрированные, но уже докопированные файлы???

В общем это уже от твоей софтины зависит - когда оно стартует, зачем оно стартует...
Однако имхо более надежно (хоть и более геморойно) - в твоем случае выполнить ручную регистрацию. Вся необходимая информация у тебя для этого есть.

Всей работы - по образу и подобию готовых веток реестра создать такие же, но с правильным путем. И ВСЕ.
Над чем ты собрался трахаться в течении дня - я в непонятках...
...
Рейтинг: 0 / 0
30.03.2004, 00:58
    #32461571
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
ПыСы
Если уж ты так полагаешься на RunOnce - ну и запихни в него и копирование файлов, и их регистрацию.
Причем копирование никакое не отложенное, а самое что ни на есть обычное.
Но оно должно пройти - если ты уверен в том, что в этот момент файлы не используются.
А если не уверен - то значит у тебя в этот момент уже обязана была произойти регистрация компонент, и тогда см. предыдущий пост.
...
Рейтинг: 0 / 0
30.03.2004, 12:15
    #32462047
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Слушайте, может не в тему но у меня в свете дисскусии родился вопрос:
бывает после некоторых setup'ов комп перезагружается и потом в процессе загрузки , в самом начале появляется некая табличка с текстом типа: Система обновляет конфигурацию (или че-то подобное). Вот мне интересно, какие-то изменения вызывают в системы программы, что после них винда после перезагрузке вначале занимается таким обновлением, что никуда больше не грузится пока все не отработает и может есть вариант использовать такой же ход для обсуждаемой проблемы.
...
Рейтинг: 0 / 0
30.03.2004, 12:52
    #32462107
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
для этого, кажется, надо копать в сторону сервиса Windows Installer (и вообще майкрософт рекомендует все инсталяшки через этот сервис делать)

З.Ы. Кажется Магнусу это не сильно поможет. У него и с обычным сетупом почему-то не сложилось.
...
Рейтинг: 0 / 0
30.03.2004, 15:56
    #32462488
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ретистрация компонентов после перезагрузки
Дело в следующем. Эта софтина вообще должна была делаться не на ВБ, а на чем нибудь типа Macromedia Director. ИМХо.
Диск. Просто диск, типа мультимедиа. Какталог норм. Кроме экзешника ничего не хотят. Даже авторана.
"программирование - интелектуальная проституция, цель которой полное удовлетворение клиента, воплощение в программные коды его тупорылых и бляцких идей."(с)папа акуз
Лучше выразить просто невозможно. :)
Софтина запускается только с диска. Причем база(акцесс) валяется на винте :), копируется туда при первом запуске. Это сделано чтобы иметь возможность обновления. Типа юзер где то наколупает новую базу, запускает софтину, жмет кнопулину, указывает путь и зашибись.

По большей части необходимо обновлять виндовские либы, с пяток моих и третьих. В принципе то все уже работает.
RunOnce обрабатывается сразу после логина, в него ИМХО и вышеупомянутый инсталлер все пихает, для пущей уверенности можно использовать RunServicesOnce, этот обрабатывается раньше всех, до логина.

2 ЛП
Если б я умофрился на васике написать дрова, этобыло бы СВЕРШЕНИЕ :)
Я ж не против ручной регистрации.Только вто не нашел я ВСЕХ необходимых ключей. Можно конечно че нить зарегить и глянуть что и куда. Но это уже вне бюджета. Эта софтина вообще как довесок к подобной системе внедренной в веб проэкт для того же клиента. Так что остальные эксперименты, уже дома для себя :). Вопрос переходит в стадию чисто академического интереса. :)


Magnus
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ретистрация компонентов после перезагрузки / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]