classification
Title: MSVCRT packing in Windows Installer (3.0a4)
Type: Stage:
Components: Build, Installation Versions: Python 3.0
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: barnabas79, loewis, wesley.spikes
Priority: normal Keywords:

Created on 2008-04-16 01:05 by wesley.spikes, last changed 2008-10-17 14:14 by loewis. This issue is now closed.

Messages (3)
msg65537 - (view) Author: Wesley Spikes (wesley.spikes) Date: 2008-04-16 01:05
I've searched and did not find any open ticket to make suggestions on, 
so I'm posting it here.

You currently have posted "The MSI installers for Python 3.0a4 are 
compiled with the new Visual Studio 2008 Professional version. 
Therefore Python depends on the -Visual C++ runtime library 9.0. We 
currently don't package this library properly, which means that non-
Administrator installation is currently not supported. Contributions to 
fix this problem are welcome."

Two potential fixes, both of which should be very readily doable. First 
one is to set the Linking option in MSVC++ to a static link to the CRT. 
This in-builds the library with Python. (Options /MT and /MTd, for 
release and debug versions, respectively.)

The other potential resolution for Non-Admin installs, which may or may 
not be more stable, is to include the MSVCRT DLLs into the directory 
containing the Python installation. If needed, you may have to register 
these files manually into the HKCU hive.

Hope that helps with your described packaging issue with the installer.

(Classified under Build and Installation, since it deals with both 
halves -- feel free to reclassify as appropriate.)
msg71176 - (view) Author: Paul Molodowitch (barnabas79) Date: 2008-08-15 18:25
To do a private, SxS install, see:

http://msdn.microsoft.com/en-us/library/ms997620.aspx

I once made a private SxS installation of a MSVC-reliant app (that you
could install with non-admin privileges), and if recall correctly, it
required disabling the generation / embedding of the manifest file in
MSVC++, and then include the MSVC dlls and hand-edited manifest files in
the installation.  (Or perhaps you could somehow edit the options for
the embedded manifest's generation? never tried this myself...).  (Or,
if you don't like .manifest files littering the install directory, turn
off the auto-generation of the manifest, but embed your own hand-edited
manifest as a resource.  I'm sure this is possible, but figuring out the
exact steps to do it may be more headache then it's worth...)

I don't remember exactly, but I think in order to make a manifest that
worked for non-Admin install, I think all I had to do was remove the
'publicKeyToken' property from the assemblyIdentity... if it's present,
I believe it tries to find a registered, "signed" version of the dlls -
and registering signed SxS dlls requires admin privileges.  What I don't
remember is, if 'publicKeyToken' is present, if it just gives up if it
doesn't find a signed version, or it simply means that it will use a
signed version preferentially to a 'local' copy if both are present...
msg74910 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-10-17 14:14
I'm closing this issue as out-of-date.

Static linking is out of the question, as that will duplicate CRT global
various in confusing and risky ways.

Installing the CRTs into the Python directory is what Python 2.6 does,
and it does not work on Vista.
History
Date User Action Args
2008-10-17 14:14:52loewissetstatus: open -> closed
resolution: out of date
messages: + msg74910
nosy: + loewis
2008-08-15 18:25:16barnabas79setnosy: + barnabas79
messages: + msg71176
2008-04-16 01:05:53wesley.spikescreate