This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Windows 8 certification
Type: enhancement Stage:
Components: Windows Versions: Python 3.2, Python 3.3, Python 2.7
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: Nosy List: agale031176, brian.curtin, eric.araujo, loewis, tarek, tim.golden
Priority: normal Keywords:

Created on 2012-08-22 08:53 by agale031176, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (4)
msg168859 - (view) Author: Aaron Galea (agale031176) Date: 2012-08-22 08:53
Hi

We have an application created with python2.7 and created into an executable using py2exe. However we are getting an issue with Windows 8 certification due to compiler parameters. We would like to have this application Windows 8 certified but we can't get pass the following warning:
===============================================
Windows security features test 


WARNING 
Binary analyzer
•
Warning: The binary analyzer test detected the following errors: 
◦File C:\Program Files (x86)\TestApp\test.exe has failed the DBCheck check.
◦File C:\Program Files (x86)\TestApp\test.exe has failed the NXCheck check.

•
Impact if not fixed: If the app doesn’t use the available Windows protections, it can increase the vulnerability of customer's computer to malware. 

•
How to fix: Apply the SAFESEH, DYNAMICBASE, and NXCOMPAT options when you link the app. See link below for more information:
Fixing Binary Analyzer Errors 

========================================================================

In order to fix this issue I had to modify the file msvc9compiler.py by changing the following line from:

self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO']

to

self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO', '/DYNAMICBASE', '/SAFESEH', '/NXCOMPAT']

and rebuild py2exe. Once I have done this the test passed.

I could go about it by having local patch available to my team but preferably I try to avoid patching the standard python modules.

My question is if there is another way to do this? and whether it would be a good idea to include these flags in future distutils?
msg168891 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-08-22 15:10
This is not an issue of Python, but py2exe; please report it to the py2exe maintainers.
msg168984 - (view) Author: Aaron Galea (agale031176) Date: 2012-08-24 08:34
Its a distutils issue not py2exe. Not sure where I should post about this problem. 

The change I applied was in msvc9compiler.py in distutils. Once this change has been applied py2exe was rebuild to generate the correct runw.exe with the correct settings in the PE header of the executable.
msg169282 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-08-28 13:53
The change you proposed cannot be applied to Python 2.7, or any distutils code bases, for a number of reasons:

- it's not clear (and probably not the case) that the proposed command line flags are correct for all distutils code. It may well be that some code breaks if you use the flags - if they were 100% backwards compatible, Microsoft wouldn't have made them separate options.

- distutils is essentially frozen, any change to it requires considerable negotiation.

- for Python 2.7 to 3.3, making such a change would be a new feature (to pass the Windows 8 certification), which cannot be added to a bug fix release.

So if you insist that this is a distutils bug, I'll re-close the issue as "won't fix".

Instead, I suggest to find a way to solve this within py2exe's setup.py, e.g. by monkey-patching distutils.msvccompiler.MSVCCompiler with a subclass of msvc9compiler.MSVCCompiler.
History
Date User Action Args
2022-04-11 14:57:35adminsetgithub: 59966
2012-08-28 13:53:34loewissetresolution: not a bug -> wont fix
messages: + msg169282
2012-08-24 08:34:30agale031176setmessages: + msg168984
2012-08-22 15:10:45loewissetstatus: open -> closed
resolution: not a bug
messages: + msg168891
2012-08-22 11:22:02pitrousetnosy: + tim.golden, brian.curtin
2012-08-22 11:21:56pitrousetassignee: eric.araujo ->

nosy: + loewis
components: + Windows, - Distutils
versions: + Python 3.2, Python 3.3
2012-08-22 08:53:24agale031176create