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

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

Спасибо.

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

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

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

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

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

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

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

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

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

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



Magnus
...
Рейтинг: 0 / 0
Ретистрация компонентов после перезагрузки
    #32461513
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да какая нафиг разница - есть там файлы, нет их там...
Регистрация - это всего лишь запись нескольких значений в реестр. Ну нет еще файла (там, где он должен быть), ну и что теперь, реестр read-only стал??
Не умеешь руками регистрить - зарегистри файлы из любой директории, потом по реестру пробегись и этот путь (откуда регистрил) замени на тот, который в конечном итоге должен быть. Делов то...
...
Рейтинг: 0 / 0
Ретистрация компонентов после перезагрузки
    #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
Ретистрация компонентов после перезагрузки
    #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
Ретистрация компонентов после перезагрузки
    #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
Ретистрация компонентов после перезагрузки
    #32461570
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, Магнус, ты мне все-таки объясни вот что...
Ну пусть ты умудрился на VB написать дрова для видеокарточки... хрен бы с ним :)
Но откуда у тебя уверенность в том, что то, что прописано в RunOnce, стартует раньше, чем система начнет пытаться использовать еще незарегистрированные, но уже докопированные файлы???

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

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

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

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

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


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


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