Исходное сообщение находится здесь: http://mail.python.org/pipermail/python-win32/2010-December/011011.html
Я использую:
- ОС: 64-битная Windows 7 Профессиональная
- Питон: python-2.7.1.amd64
- Расширения Win32 Python: pywin32-214.win-amd64-py2.7
- Py2exe: py2exe-0.6.9.win64-py2.7.amd64
Я пытаюсь создать наложение значков для Windows. На 32-битной Windows все работало, а на 64-битной Windows 7 не работало.
Вот модули Python, которые я создал для тестирования:
test_icon_overlay.py: ( http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0002.obj ), созданный в Python для наложения значков, который добавляет значок наложения галочки (C:\icons\test.ico) в папке "C:\icons"
setup_VI.py: ( http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0003.obj ), который создает test_icon_overlay.dll для распространения.
- icons.zip: ( http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0001.zip ) для тестирования вы должны извлечь icons.zip внутрь C:\
Наложение значка появляется в папке C:\icons
, когда я запускаю python
test_icon_overlay.py
в командной строке Windows и перезапускаю explorer.exe
. Но он не работает с файлом dll, созданным с помощью setup_VI.py
Я создал файл dll с помощью python setup_VI.py py2exe
, а затем попытался зарегистрировать его с помощью regsvr32 test_icon_overlay.dll
. Ошибка регистрации с сообщением об ошибке Windows Error 0x80040201 while registering shell extension
.
Затем я включил регистратор в Python27/Lib/site-packages/py2exe/boot_com_servers.py
, и вот трассировка, которую я получаю в comerror.txt
на regsvr32
test_icon_overlay.dll
PATH is ['C:\\root\\avalon\\module\\sync\\python\\src\\dist\\library.zip']
Traceback (most recent call last):
File "boot_com_servers.py", line 37, in <module>
pywintypes.error: (126, 'GetModuleFileName', 'The specified module could not
be found.')
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'DllRegisterServer' is not defined
Похоже, может быть проблема с win32api.GetModuleFileName(sys.frozendllhandle)
или со сборкой dll на 64-битной Windows 7.
Кроме того, я видел, что установка pywin32-214.win-amd64-py2.7
в 64-разрядной версии Windows 7 завершается с сообщением об ошибке: Снимок
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
Есть ли что-то, что я делаю неправильно? Любая помощь в этом высоко ценится.
test_icon_overlay.exe /reg
успешно регистрирует это, но я не уверен, правильно ли он поступает. Возможно обходной путь... - person Heikki Toivonen   schedule 07.01.2011