Почему сгенерированный genguid.exe clsid не работает?

Я пытаюсь изменить пример exceladdin.py из демонстраций pywin.

В противном случае я могу изменить его, но когда я заменю clsid, указанный в примере:

"{C5482ECA-F559-45A0-B078-B2036E6F011A}"

С тем, который сгенерирован genguid.exe или pythoncom.CreateGuid(), например:

"{E44EF798-7FDF-4015-AED6-00234CBBBA77}"

Ком-надстройка перестает работать. Никаких следов, никаких ошибок, только следующий текст в списке COM-объектов Excel (перевод) «Надстройка не загружена. Ошибка во время выполнения при загрузке COM-объекта».

Я пропустил шаг в создании clsid?

EDIT: я думаю, что нашел проблему... clsid - это идентификатор dll. В случае с python clsid относится к pythoncomloader27.dll. Это правильно? ... но все же я не могу загрузить правильный файл Python. clsid каким-то образом связан с pythoncomloader и исходным файлом python. Если я сгенерирую новый clsid, мне нужно связать его с pythonloader? Как?


person Juha    schedule 29.08.2012    source источник


Ответы (1)


Хорошо, я думаю, что нашел ответ...

python нельзя установить в папку «program files», если вы не запустите все как root (admin).

Программа python, которая регистрирует com-сервис, читает/записывает каталог <pythonInstallationDir>/Lib/win32com/gen-py. Word (или программа, использующая службу com) также должна иметь возможность писать (?) туда. Существует неудобочитаемый словарь и т.д.

установка python на c:/python27 решила мою проблему. Теперь только программа регистрации должна быть запущена от имени пользователя root. Word может быть запущен как обычный пользователь. Я думаю, что в моем случае я испортил словарь, не предоставив достаточно прав во второй раз (в первый раз я зарегистрировал его правильно), и он использовал исходные ключи.

person Juha    schedule 02.09.2012