Можно ли собрать exe на Vista и развернуть на XP с помощью py2exe - PullRequest
8 голосов
/ 08 января 2011

Я создал некоторую программу, использующую python для Windows Vista. Но я хочу развернуть его на Windows XP. Нужно ли делать новую сборку на Windows XP? Или есть возможность сделать сборку, которая будет работать на обеих этих системах?

РЕДАКТИРОВАТЬ (РЕДАКТИРОВАТЬ 2 - очень простая программа также не работает): Моя настройка:

from distutils.core import setup
import py2exe

setup(console=['orderer.py'])

Используя проводник зависимостей, я проверил, что зависимости:

msvcr90.dll
kernel32.dll
  +ntdll.dll

Почти решено:

Я понял, что установка: http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en делает дело. Но я пытался предоставить msvrc90.dll вручную раньше, и это не сработало, есть ли способ распространять его автоматически? Или я должен предоставить ему этот установочный файл.

Последняя и главная проблема

Теперь у меня проблема с msvcrt.dll. Сообщение, которое произошло в Windows XP:

Точка входа в процедуру wcsscpy_s не может быть расположен в динамическом библиотека ссылок msvcrt.dll

На Vista у меня есть версия 7.0.6001.18000

Но на XP 7.0.2600.5512

Есть ли способ это исправить?

Кажется, я не исключил несколько глупых ошибок ...: 1035 *

$ grep -lir msvcrt.dll .
./buildout
./buildtest.py
./dist/ACTIVEDS.dll
./dist/adsldpc.dll
./dist/ATL.DLL
./dist/credui.dll
./dist/DSOUND.dll
./dist/MAPI32.dll
./dist/PROPSYS.dll
./dist/WLDAP32.dll

теперь это работает!

Ответы [ 2 ]

3 голосов
/ 12 января 2011

Создайте файл с именем «Microsoft.VC90.CRT.manifest» со следующим содержимым рядом с исполняемым файлом, созданным py2exe и файлами msvcr90.dll, msvcp90.dll и msvcm90.dll:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable/>
    <assemblyIdentity
        type="win32"
        name="Microsoft.VC90.CRT"
        version="9.0.21022.8"
        processorArchitecture="x86"
        publicKeyToken="1fc8b3b9a1e18e3b"
    />
    <file name="msvcr90.dll" />
    <file name="msvcp90.dll" />
    <file name="msvcm90.dll" />
</assembly>
2 голосов
/ 08 января 2011

если у вас 32-битный python в вашей Vista-системе и вы используете py2exe для создания exe-файла, он также должен работать на XP.

у вас возникли проблемы? если да, то что они?

...