Code review comment for lp://staging/~gz/bzr-windows-installers/include_manifest_in_installer_632465

Revision history for this message
Martin Packman (gz) wrote :

So, this branch gets the installer to complete and then basic bzr commands work, but qbzr and bzr-explorer are still broken for people without the runtimes already installed globally. There are two issues remaining.

Firstly, the Qt libraries do actually depend on the cpp runtime, but only for:

    MSVCP90.dll

                 BE4 ?uncaught_exception@std@@YA_NXZ

That could easily be fixed by copying that lib as well.

The second problem I'm not sure how we should resolve though. With this branch the directory layout is like:

  bzr.exe
  bzr_postinstall.exe
  python26.dll
  Microsoft.VC90.CRT/
    Microsoft.VC90.CRT.manifest
    msvcr90.dll
  lib/
    library.zip
    QtCore4.dll
    pywintypes26.dll

This means bzr.exe works because though it and python26.dll need msvcr90.dll to run, XP looks in the sibling directory for it and the manifest:
<http://msdn.microsoft.com/library/aa374224>
However, when it tries to load a library from the lib folder, those libraries with bundled manifests do not use the loaded copy but instead try to find a manifest in their own directory. We could try and prevent bundling any manifests to stop this behaviour as per an upstream change:
<http://bugs.python.org/issue4120>
But I think Qt would still be broken if it needs the cpp runtime because it wouldn't be preloaded.

One option would be to flatten the lib dir back down to the root, and possibly put some more things in library.zip to clear up the resultant cruft.

« Back to merge proposal