cloudmatrix / esky

an auto-update framework for frozen python apps
BSD 3-Clause "New" or "Revised" License
362 stars 74 forks source link

cxfreeze on windows - mscrvt #112

Closed timeyyy closed 6 years ago

timeyyy commented 8 years ago

python3 test failing ( due to mscrvt bundling )

this line is returning an empty list on Python3, when on py2 it doesn't https://github.com/cloudmatrix/esky/blob/master/esky/bdist_esky/__init__.py#L604

ryan says: it's entirely possible that the manifest format has changed in newer releases. You could try just printing out the whole manifest_str and grepping for references to "CRT", might give some clues as to what's changed.

timeyyy commented 8 years ago

the following is generated here https://github.com/cloudmatrix/esky/blob/master/esky/winres.py#l142

so on python 2

<type 'str'>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

and on python3

b'<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\r\n  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">\r\n   
 <security>\r\n      
<requestedPrivileges>\r\n  
      <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>\r\n  
    </requestedPrivileges>\r\n  
  </security>\r\n
  </trustInfo>\r\n
</assembly>'

this fails also on master branch not really sure how to proceed (low exp in c and windows programming). As you can see it's not sucking in required info.

if you grep through for msvcr in this file you can see how cxfreeze manage it... https://bitbucket.org/anthony_tuininga/cx_freeze/src/aebc9c32615c14137c948c521a8d91562559237c/cx_Freeze/freezer.py?at=default&fileviewer=file-view-default

rfk commented 8 years ago

Huh - maybe the MSCVRT stuff is no longer needed at all with python3?

timeyyy commented 8 years ago

when i install my app it doesn't work on windows without me installing microsoft visual c++ 2010.

Isn't this the issue caused by not having the mcvrt?

I don't have the licenses to redistribute so i have never tried it but i assume...

timeyyy commented 8 years ago

however i found this on the py2exe pypi page

The C-runtime library for Python 3 does NOT need a windows manifest any longer to load correctly >(this is a feature of Python, not of py2exe)

Somehow this seems contradictory because it seems as though cxfreeze requires it.. http://stackoverflow.com/questions/24103105/how-to-link-msvcr100-dll-to-cx-freeze-program

Could this dependency be caused by another library i.e pywin32?

rfk commented 6 years ago

Unfortunately this project is no longer actively maintained, so I'm going to move it into archive mode:

https://rfk.id.au/blog/entry/archiving-open-source-projects/