Слетает регистрация Richtx32.ocx

Программирование на Visual Basic for Applications
Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Слетает регистрация Richtx32.ocx

Сообщение Кукша12 » 05.10.2007 (Пт) 16:54

Я как-то спрашивал уже, потом вроде решилось, но оказалось, что нет. Пишу подробно, не взыщите...

Есть макрос для Word VBA, который использует диалоговое окно с элементом Richtx32.ocx (текстовое окно с возможностью выделения жирным и прочими примочками).
При установке макроса, из командной строки делается регистрация этого ocx, то есть:
regsvr32 /s C:\Pupkin\Richtx32.ocx
(перенос файла в c:\windows\system32 ничего не дал... или это критично?)

Всё работает исправно до тех пор, пока не происходит автообновление операционки службой Windows Update. После её работы, Word выдаёт сообщение, что библиотека не зарегистрирована. А потом при запуске макроса пишется, что элемент не найден и в отладке высвечивается название того самого элемента - текстового окна. При этом, сам элемент на месте - виден в VBA-конструкторе. Требуется выйти из ворда и дополнительно перерегистрировать Richtx32.ocx , после чего всё снова работает до следующего автообновления.

Недавно в макрос, запускаемый при старте Word я забил строку:
Код: Выделить всё
RetVal = Shell("regsvr32 /s C:\Pupkin\Richtx32.ocx", 1)

стало лучше, но не намного...
Благодаря ей сообщения об ошибках не исчезают, но хоть не надо лезть в командную строку, а достаточно просто перезапустить ворд. То есть, регистрация видимо проходит, но при первом запуске компонента Richtx32 ещё не зарегистрирована и выдаётся ошибка? Потом элемент видимо регистрируется, но изменения не подхватываются на лету.

Что любопытно: если вручную снести Richtx32.ocx командой
regsvr32 /u C:\Pupkin\Richtx32.ocx
то элемент из диалогового окна исчезает полностью! И его приходится руками восстанавливать или устанавливать весь пакет с макросами заново, чтобы не гемороиться. То есть
либо автообновление виндов сносит компоненту не полностью,
либо строка
Код: Выделить всё
RetVal = Shell("regsvr32 /s C:\Pupkin\Richtx32.ocx", 1)

хоть и отрабатывает, но не доводит дело до конца,
либо эта строка останавливает вордовское удаление элемента (из-за того, что Richtx32.ocx не найдена).

Собственно вопросы:
1) правильно ли я вообще регистрирую Richtx32.ocx????
2) как делать регистрацию ocx при запуске ворда, но не через встроенный вордовый макрос автозапуска, а до того, как ворду встретятся данные о незарегистрированном элементе управления?
3) как загрузить окно со всеми встроенными в него макросами из отдельного файла? может тогда регистрация через вордовский авторан сработает, поскольку в файле dot не будет этого элемента?
4) какие ещё есть способы эту напасть обойти?

Уф-фф... извините за многословность, но короче не выходит...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 05.10.2007 (Пт) 18:29

Все сие делается путем использования нормального установщика.
Весь мир матрица, а мы в нем потоки байтов!

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 05.10.2007 (Пт) 18:55

А может просто отключить Windows Update? У меня эта служба отключена. Потому что мне не нравится когда кто-то без моего ведома ломится в сеть, че-та там спрашивает, ищет, а потом говорит, типа будем качать или нет? Да ещё и регистрация после апдейта отваливается...
Подпись проходит рефакторинг

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 05.10.2007 (Пт) 19:45

Viper писал(а):Все сие делается путем использования нормального установщика.

За совет спасибо. Но это на самый крайний случай, если только совсем за горло возьмут. Хотелось бы разобраться что к чему, тогда и установщик не нужен.

Lumen, ты не одинок :) Я тоже этой обновлялкой не пользуюсь, но пользователям не объяснишь, что сделанное микрософтом ведёт себя не так, как всем думается.

Кукша12
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 09.08.2006 (Ср) 16:43

Сообщение Кукша12 » 14.10.2007 (Вс) 20:59

Жаль, что никто не ответил...
Но, если вдруг кто столкнётся, попробуйте так:
Указанную вверху строку с регистрацией вставьте в процедуру autoexec, но вынесите эту процедуру в ОТДЕЛЬНЫЙ файл dot. На всякий случай я его обозвал aaa.dot, чтобы раньше всех по алфавиту стоял, но и при смене имени на другое всё равно всё работает нормально.
У меня ошибка исчезла - сделал несколько запусков автообновления и всё до сих пор работает, одно плохо - непонятно почему :) Ясно только, что регистрация стала делаться до считывания основного dot.

Кто знает в каком порядке происходит считываение dot- файлов при запуске Word?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 112

    TopList