From: Nerijus B. <ne...@us...> - 2007-11-27 18:52:20
|
Hello, py2exe almost works under wine. Please see http://bugs.winehq.org/show_bug.cgi?id=3591#c5 - generated image works under wine and Win98, but under XP trying to run it gives: app.exe is not a valid Win32 application. Dmitry Timoshkov (wine developer) said: "Report this to py2exe authors, looks like they create an ivalid PE image, and rely on BindImage to fix it for them." Is it possible to fix it in py2exe until wine supports BindImage? Regards, Nerijus |
From: Thomas H. <th...@ct...> - 2007-11-27 19:40:18
|
Nerijus Baliunas schrieb: > Hello, > > py2exe almost works under wine. Please see http://bugs.winehq.org/show_bug.cgi?id=3591#c5 - > generated image works under wine and Win98, but under XP trying to run it gives: > app.exe is not a valid Win32 application. > > Dmitry Timoshkov (wine developer) said: "Report this to py2exe authors, looks > like they create an ivalid PE image, and rely on BindImage to fix it for them." Looking into the py2exe sources: BindImageEx is used to find the binary dependencies for pyds and dlls images. BindImageEx is only used to 'bind' these images and find out whether they call the 'PyImport_ImportModule' function, and to find other dlls that they require. > Is it possible to fix it in py2exe until wine supports BindImage? No. py2exe does NOT create an invalid image and fixes it with BindImage. Thomas |
From: Nerijus B. <ne...@us...> - 2007-11-27 20:25:17
|
On Tue, 27 Nov 2007 20:31:45 +0100 Thomas Heller <th...@ct...> wrote: > Looking into the py2exe sources: BindImageEx is used to find the binary dependencies > for pyds and dlls images. BindImageEx is only used to 'bind' these images and find out > whether they call the 'PyImport_ImportModule' function, and to find other dlls that > they require. > > > Is it possible to fix it in py2exe until wine supports BindImage? > > No. py2exe does NOT create an invalid image and fixes it with BindImage. Any idea why does py2exe create image which runs on 98, but doesn't on XP? Does it link in any system (wine in my case) libraries or should it work the same on all systems? For example, is there a difference in generated image if I run py2exe on 98 or XP? Regards, Nerijus |
From: Thomas H. <th...@ct...> - 2007-11-27 20:46:36
|
Nerijus Baliunas schrieb: > On Tue, 27 Nov 2007 20:31:45 +0100 Thomas Heller <th...@ct...> wrote: > >> Looking into the py2exe sources: BindImageEx is used to find the binary dependencies >> for pyds and dlls images. BindImageEx is only used to 'bind' these images and find out >> whether they call the 'PyImport_ImportModule' function, and to find other dlls that >> they require. >> >> > Is it possible to fix it in py2exe until wine supports BindImage? >> >> No. py2exe does NOT create an invalid image and fixes it with BindImage. > > Any idea why does py2exe create image which runs on 98, but doesn't on XP? > Does it link in any system (wine in my case) libraries or should it work > the same on all systems? For example, is there a difference in generated image > if I run py2exe on 98 or XP? I do not think so. However, I do not use win98 anymore, nor have I ever used wine. Can it be that wine creates broken images, and that XP has stricter checks for the image format than wine or win98? A few checks (if you have the systems available) would possibly provide some insights. Images created on (wine|win98|winXP), do they run on (wine|win98|winXP)? Thomas |
From: Nerijus B. <ne...@us...> - 2007-11-28 00:24:18
|
On Tue, 27 Nov 2007 21:46:00 +0100 Thomas Heller <th...@ct...> wrote: > > Any idea why does py2exe create image which runs on 98, but doesn't on XP? > > Does it link in any system (wine in my case) libraries or should it work > > the same on all systems? For example, is there a difference in generated image > > if I run py2exe on 98 or XP? > > I do not think so. However, I do not use win98 anymore, nor have I ever used wine. > Can it be that wine creates broken images, and that XP has stricter checks > for the image format than wine or win98? How does py2exe create images? Does it just contatenate the files or does it use some win32 functions? > A few checks (if you have the systems available) would possibly provide some insights. > Images created on (wine|win98|winXP), do they run on (wine|win98|winXP)? Created on 98 - runs on 98(-), XP(+), wine(+). Created on XP - runs on 98(-), XP(+), wine(+). Created on wine - runs on 98(+), wine(+), but not XP. (+) means it runs with full functionality. (-) means it does not find wxPython libraries, i.e. triggers this code (but it runs and does not complain about "not a valid Win32 application"): # main_is_frozen() returns True when running the exe, and False when # running from a script. def main_is_frozen(): return (hasattr(sys, "frozen") or # new py2exe hasattr(sys, "importers") # old py2exe or imp.is_frozen("__main__")) # tools/freeze # If application is not frozen to binary, try selecting wxPython 2.6 or 2.5 # on multiversioned wxPython installation. if not main_is_frozen(): try: import wxversion wxversion.select(["2.5", "2.6-unicode", "2.8-unicode"]) except Exception, e: print "You seem to have wxPython 2.4: %s" \ % e try: import wx except ImportError: print >> sys.stderr, "**" print >> sys.stderr, "** Error: wxPython library not found" print >> sys.stderr, "** Please install wxPython 2.5 or later to run OpenDict" print >> sys.stderr, "**" sys.exit(1) Regards, Nerijus |
From: Mark H. <mha...@sk...> - 2007-11-28 01:47:08
|
> How does py2exe create images? Does it just contatenate the files or > does > it use some win32 functions? See build_executable in build_exe.py - this copies the 'template' executable, then uses py2exe_util.add_resource(), which calls the win32 functions BeginUpdateResource, UpdateResource and EndUpdateResource. It might be interesting to try and locate all tools which can load or dump PE files. For example, Visual Studio can open it to allow resources to be edited - it will be interesting to know what it says about it. Other tools may even tell you specifically what it considers "invalid" about the image. Mark |
From: Nerijus B. <ne...@us...> - 2007-12-03 02:10:08
|
On Wed, 28 Nov 2007 12:43:30 +1100 Mark Hammond <mha...@sk...> wrote: > > How does py2exe create images? Does it just contatenate the files or > > does it use some win32 functions? > > See build_executable in build_exe.py - this copies the 'template' > executable, then uses py2exe_util.add_resource(), which calls the win32 > functions BeginUpdateResource, UpdateResource and EndUpdateResource. > > It might be interesting to try and locate all tools which can load or dump > PE files. For example, Visual Studio can open it to allow resources to be > edited - it will be interesting to know what it says about it. Other tools > may even tell you specifically what it considers "invalid" about the image. I tried http://www.uinc.ru/files/neox/PE_Tools.shtml. I used Tools->PE Editor-> opened file->Optional Header->Size Of Image was 00016C00. Then I pressed "?" and it became 00016000->OK->OK. The fixed image can be run on wine, win98 and XP, while the original image could not be run on XP. I assume it's wine who counts size of image, or is it py2exe python code? Regards, Nerijus |
From: Mark H. <mha...@sk...> - 2007-12-03 02:49:23
|
[resending - forgot to CC the list] > On Wed, 28 Nov 2007 12:43:30 +1100 Mark Hammond > <mha...@sk...> wrote: > > > > How does py2exe create images? Does it just contatenate the files > or > > > does it use some win32 functions? > > > > See build_executable in build_exe.py - this copies the 'template' > > executable, then uses py2exe_util.add_resource(), which calls the > win32 > > functions BeginUpdateResource, UpdateResource and EndUpdateResource. > > > > It might be interesting to try and locate all tools which can load or > dump > > PE files. For example, Visual Studio can open it to allow resources > to be > > edited - it will be interesting to know what it says about it. Other > tools > > may even tell you specifically what it considers "invalid" about the > image. > > I tried http://www.uinc.ru/files/neox/PE_Tools.shtml. I used Tools->PE > Editor-> > opened file->Optional Header->Size Of Image was 00016C00. Then I > pressed "?" > and it became 00016000->OK->OK. I get similar behaviour - but even just for the 'template' executable used by py2exe (py2exe/run.exe)- which has been created directly by the MS linker. If shows Size Of Image as 00007000, and clicking '?' changes it to 000063A0. Does run.exe work for you? You should see the message 'Could not locate script resource:The specified resource type cannot be found in the image file.' written to the console. > The fixed image can be run on wine, > win98 > and XP, while the original image could not be run on XP. > I assume it's wine who counts size of image, or is it py2exe python > code? Only the MS linker and those win32 functions ever play with the PE image directly. I'm afraid I don't know enough about this to comment on that value, and who should or should not calculate it - sorry I can't be more help... Cheers, Mark |
From: Nerijus B. <ne...@us...> - 2007-12-03 03:20:14
|
On Mon, 3 Dec 2007 13:48:00 +1100 Mark Hammond <mha...@sk...> wrote: > > I tried http://www.uinc.ru/files/neox/PE_Tools.shtml. I used Tools->PE > > Editor-> > > opened file->Optional Header->Size Of Image was 00016C00. Then I > > pressed "?" > > and it became 00016000->OK->OK. > > I get similar behaviour - but even just for the 'template' executable used > by py2exe (py2exe/run.exe)- which has been created directly by the MS > linker. If shows Size Of Image as 00007000, and clicking '?' changes it to > 000063A0. > > Does run.exe work for you? You should see the message 'Could not locate > script resource:The specified resource type cannot be found in the image > file.' written to the console. Yes, it does. But after using PE Editor on run_w.exe, I can run generated app on XP! > Only the MS linker and those win32 functions ever play with the PE image > directly. I'm afraid I don't know enough about this to comment on that > value, and who should or should not calculate it - sorry I can't be more > help... I tried to use PE Editor on PETools.exe itself, and pressing '?' changes Size Of Image too. So it's probably common. I'll try to find out if there's nothing wrong about fixing Size Of Image or having it incorrect. Thanks for your help! Regards, Nerijus |