classification
Title: Add VS CRT redist to the MSI installer
Type: Stage:
Components: Installation, Windows Versions: Python 3.0, Python 2.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: asmodai, christian.heimes, jorend, loewis
Priority: high Keywords:

Created on 2007-12-07 18:25 by christian.heimes, last changed 2008-05-01 22:09 by loewis. This issue is now closed.

Files
File name Uploaded Description Edit
Python26.vdproj asmodai, 2008-02-29 12:10 hardcoded setup project file
Messages (12)
msg58278 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2007-12-07 18:25
The 3.0a2 installer requires the user to install the VS CRT library
manually. 3.0a3 and 2.6a1 should automate the installation of vsredist
somehow.
msg58284 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2007-12-07 23:06
I tried running vcredist from within the python MSI. That aborts with
error message that it can't run another installer while one is already
running.
msg63030 - (view) Author: Jeroen Ruigrok van der Werven (asmodai) * (Python committer) Date: 2008-02-26 06:29
As taken from http://blogs.msdn.com/astebner/
archive/2006/08/23/715755.aspx

"Hi Didier - You should not try to install this vcredist package using 
a nested install.  Performing nested installs causes problems with 
installing hotfixes for the child packages.  You will need to use some 
kind of chainer to launch the vcredist setup package in silent mode, 
and then launch your main MSI setup afterwards."

vcredist 8 information: http://blogs.msdn.com/astebner/
archive/2007/02/07/update-regarding-silent-install-of-the-vc-8-0-
runtime-vcredist-packages.aspx

Some hints on how to redistribute vc++ libraries:

http://blogs.msdn.com/vcblog/archive/2007/10/12/how-to-redistribute-the-
visual-c-libraries-with-your-application.aspx
msg63031 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-02-26 06:36
asmodai, which details in these postings are you referring to
specifically? I find none of them helpful, wrt to packaging Python.
msg63032 - (view) Author: Jeroen Ruigrok van der Werven (asmodai) * (Python committer) Date: 2008-02-26 06:49
The hints that the vcredist cannot/should not be installed nested, but 
should be chained.
The details on the full flags used/supported by the vcredist files.
And the last one how to do the merge modules (and some other 
scenario's) way of adding the dependency.

I have no idea of the level of Windows development of people, but at 
least this way some of the background information is logged somewhere.
msg63053 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-02-26 19:56
> The hints that the vcredist cannot/should not be installed nested, but 
> should be chained.

So how do I do chaining if I can only ship a single MSI file (which is
my objective)?

> The details on the full flags used/supported by the vcredist files.

I don't think using vcredist can work at all. I would be happy to
be proven wrong, but I really cannot see a solution to use it. Instead,
I believe the merge module must be used.

> And the last one how to do the merge modules (and some other 
> scenario's) way of adding the dependency.

Which way specifically are you referring to? Using Visual Studio?
I don't think Visual Studio is capable of producing the output
that we desire (but again, I would be happy to be proven wrong).
msg63094 - (view) Author: Jeroen Ruigrok van der Werven (asmodai) * (Python committer) Date: 2008-02-28 14:36
OK, I played around a bit and created a setup project (.vdproj file).

The relevant part for the merge modules is:

        "MergeModule"
        {
            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_8968169979C7478FA06F2A63790836FB"
            {
            "UseDynamicProperties" = "11:TRUE"
            "IsDependency" = "11:TRUE"
            "SourcePath" = "8:microsoft_vc90_crt_x86.msm"
                "Properties"
                {
                }
            "LanguageId" = "3:0"
            "Exclude" = "11:FALSE"
            "Folder" = "8:"
            "Feature" = "8:"
            "IsolateTo" = "8:"
            }
            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_B6A9939311C545EBB80282DDFF193627"
            {
            "UseDynamicProperties" = "11:TRUE"
            "IsDependency" = "11:TRUE"
            "SourcePath" = "8:policy_9_0_Microsoft_VC90_CRT_x86.msm"
                "Properties"
                {
                }
            "LanguageId" = "3:0"
            "Exclude" = "11:FALSE"
            "Folder" = "8:"
            "Feature" = "8:"
            "IsolateTo" = "8:"
            }
        }

One thing I read is that these setup projects (and perhaps the merge 
modules) are not supported on the express editions and needs to do the 
xcopy routine.

Let me know if I should attach my .vdproj, right now it is hardcoded in 
some places, but it creates a .MSI with the following:

catalog.21023.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
catalog.21022.08.policy_9_0_Microsoft_VC90_CRT_x86.RTM.52105B6B_A3EF_3A90_882A_947B287C203A
manifest.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
msvcm90.dll.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
msvcp90.dll.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
msvcr90.dll.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
nosxs_msvcm90.dll.0138F525_6C8A_333F_A105_14AE030B9A54
nosxs_msvcp90.dll.0138F525_6C8A_333F_A105_14AE030B9A54
nosxs_msvcr90.dll.0138F525_6C8A_333F_A105_14AE030B9A54
policy.21022.08.policy_9_0_Microsoft_VC90_CRT_x86.RTM.52105B6B_A3EF_3A90_882A_947B287C203A
ul_catalog.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
ul_catalog.21022.08.policy_9_0_Microsoft_VC90_CRT_x86.RTM.52105B6B_A3EF_3A90_882A_947B287C203A
ul_manifest.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
ul_msvcm90.dll.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
ul_msvcp90.dll.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
ul_msvcr90.dll.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54
ul_policy.21022.08.policy_9_0_Microsoft_VC90_CRT_x86.RTM.52105B6B_A3EF_3A90_882A_947B287C203A
_15FEE25FEEA5B2FA5906FBB18964EA25
_39CC7CD67C9CC4024DB4457CAD1D8F4B
_64A91316C96BFF833C45602D2342A095
_F11BA2FBEC12D0CBA986C9D17E9781C0

So on that front I think it is a mission accomplished, now to tweak and 
tune.
msg63107 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-02-28 21:35
> So on that front I think it is a mission accomplished, now to tweak and 
> tune.

Please do attach the project. I can't quite understand what it is that
you have achieved. Is that a project file that can create a full Python
installer?
msg63136 - (view) Author: Jeroen Ruigrok van der Werven (asmodai) * (Python committer) Date: 2008-02-29 12:10
Hi Martin,

yes, that's exactly what I am saying actually. :)

This is the resulting file I created: Python26.msi
Right now it only installs into C:\Python26 and puts python.exe, 
pythonw.exe and python26.dll there, but it is a start.

In pcbuild.sln this entry was added:

Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Python26", 
"Python26\Python26.vdproj", "{B4DFC5BC-6BEA-41B7-9A40-663F2677E506}"
EndProject

The Python26.vdproj is attached.

More work needs to be done, of course, but I merely wanted a proof of 
concept for a project file that could build a .msi and had the 
appropriate MSM integrated.
msg63140 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-02-29 17:01
Ok, I never doubted VS can do merge modules (what else if not VS could
do so?). What I'm still questioning that it is possible to do a full
Python installer as a VS setup project. I personally don't think it's
even worth the effort to try, but I might be wrong.
msg66052 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2008-05-01 21:58
As far as I understood recent commits Martin has figured out how to
integrate the VS CRT redist merge modules into the MSI installer. Am I
correct?
msg66053 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-05-01 22:09
Correct. This is now fixed.
History
Date User Action Args
2012-08-27 03:46:18belopolskyunlinkissue15787 dependencies
2012-08-27 03:46:04belopolskylinkissue15787 dependencies
2008-05-01 22:09:54loewissetstatus: pending -> closed
resolution: fixed
messages: + msg66053
2008-05-01 21:58:32christian.heimessetstatus: open -> pending
messages: + msg66052
2008-02-29 17:01:34loewissetmessages: + msg63140
2008-02-29 12:10:47asmodaisetfiles: + Python26.vdproj
messages: + msg63136
2008-02-28 21:35:28loewissetmessages: + msg63107
2008-02-28 14:36:17asmodaisetmessages: + msg63094
2008-02-26 19:56:06loewissetmessages: + msg63053
2008-02-26 06:49:16asmodaisetmessages: + msg63032
2008-02-26 06:36:14loewissetmessages: + msg63031
2008-02-26 06:29:19asmodaisetnosy: + asmodai
messages: + msg63030
2008-01-06 22:29:44adminsetkeywords: - py3k
versions: Python 2.6, Python 3.0
2007-12-07 23:06:44loewissetmessages: + msg58284
2007-12-07 18:25:27christian.heimescreate