Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
e4969f5d
Kaydet (Commit)
e4969f5d
authored
Mar 01, 2015
tarafından
Steve Dower
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Updates CRT installation for Windows installer.
Bundling versions of the CRT prior to 14.0 is no longer supported.
üst
a473b9da
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
166 additions
and
57 deletions
+166
-57
Default.wxl
Tools/msi/bundle/Default.wxl
+5
-0
PythonBootstrapperApplication.cpp
Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp
+85
-3
bundle.targets
Tools/msi/bundle/bundle.targets
+3
-0
bundle.wxl
Tools/msi/bundle/bundle.wxl
+1
-0
crt.wxs
Tools/msi/bundle/packagegroups/crt.wxs
+44
-0
crt.wixproj
Tools/msi/crt/crt.wixproj
+1
-1
crt_files.14.0.wxs
Tools/msi/crt/crt_files.14.0.wxs
+0
-40
crt_files.wxs
Tools/msi/crt/crt_files.wxs
+6
-6
msi.props
Tools/msi/msi.props
+6
-7
README.txt
Tools/msi/redist/README.txt
+15
-0
No files found.
Tools/msi/bundle/Default.wxl
Dosyayı görüntüle @
e4969f5d
...
...
@@ -11,6 +11,11 @@
<String
Id=
"Uninstalling"
>
Removing
</String>
<String
Id=
"Uninstallation"
>
Uninstall
</String>
<String
Id=
"ElevateForCRTInstall"
>
You will be prompted for Administrator privileges to install a C Runtime Library update (KB2999226).
Continue?
</String>
<String
Id=
"CancelButton"
>
&
Cancel
</String>
<String
Id=
"CloseButton"
>
&
Close
</String>
<String
Id=
"InstallHeader"
>
Install [WixBundleName]
</String>
...
...
Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp
Dosyayı görüntüle @
e4969f5d
...
...
@@ -10,8 +10,6 @@
#include "pch.h"
static
const
LPCWSTR
WIXBUNDLE_VARIABLE_ELEVATED
=
L"WixBundleElevated"
;
static
const
LPCWSTR
PYBA_WINDOW_CLASS
=
L"PythonBA"
;
static
const
LPCWSTR
PYBA_VARIABLE_LAUNCH_TARGET_PATH
=
L"LaunchTarget"
;
static
const
LPCWSTR
PYBA_VARIABLE_LAUNCH_TARGET_ELEVATED_ID
=
L"LaunchTargetElevatedId"
;
...
...
@@ -232,7 +230,7 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication {
void
OnCommand
(
CONTROL_ID
id
)
{
LPWSTR
defaultDir
=
nullptr
;
LPWSTR
targetDir
=
nullptr
;
LONGLONG
elevated
;
LONGLONG
elevated
,
crtInstalled
;
BOOL
checked
;
WCHAR
wzPath
[
MAX_PATH
]
=
{
};
BROWSEINFOW
browseInfo
=
{
};
...
...
@@ -320,6 +318,10 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication {
ReleaseStr
(
targetDir
);
BalExitOnFailure
(
hr
,
"Failed to set install target directory"
);
if
(
!
QueryElevateForCrtInstall
())
{
break
;
}
OnPlan
(
BOOTSTRAPPER_ACTION_INSTALL
);
break
;
...
...
@@ -352,6 +354,11 @@ class PythonBootstrapperApplication : public CBalBaseBootstrapperApplication {
ReleaseStr
(
targetDir
);
}
checked
=
ThemeIsControlChecked
(
_theme
,
ID_CUSTOM_INSTALL_ALL_USERS_CHECKBOX
);
if
(
!
checked
&&
!
QueryElevateForCrtInstall
())
{
break
;
}
OnPlan
(
_command
.
action
);
break
;
...
...
@@ -2311,6 +2318,75 @@ private:
}
}
BOOL
IsCrtInstalled
()
{
if
(
_crtInstalledToken
>
0
)
{
return
TRUE
;
}
else
if
(
_crtInstalledToken
==
0
)
{
return
FALSE
;
}
// Check whether at least CRT v10.0.9920.0 is available.
// It should only be installed as a Windows Update package, which means
// we don't need to worry about 32-bit/64-bit.
// However, since the WU package does not include vcruntime140.dll, we
// still install that ourselves.
LPCWSTR
crtFile
=
L"api-ms-win-crt-runtime-l1-1-0.dll"
;
DWORD
cbVer
=
GetFileVersionInfoSizeW
(
crtFile
,
nullptr
);
if
(
!
cbVer
)
{
_crtInstalledToken
=
0
;
return
FALSE
;
}
void
*
pData
=
malloc
(
cbVer
);
if
(
!
pData
)
{
_crtInstalledToken
=
0
;
return
FALSE
;
}
if
(
!
GetFileVersionInfoW
(
crtFile
,
0
,
cbVer
,
pData
))
{
free
(
pData
);
_crtInstalledToken
=
0
;
return
FALSE
;
}
VS_FIXEDFILEINFO
*
ffi
;
UINT
cb
;
BOOL
result
=
FALSE
;
if
(
VerQueryValueW
(
pData
,
L"
\\
"
,
(
LPVOID
*
)
&
ffi
,
&
cb
)
&&
ffi
->
dwFileVersionMS
==
0x000A0000
&&
ffi
->
dwFileVersionLS
>=
0x26C00000
)
{
result
=
TRUE
;
}
free
(
pData
);
_crtInstalledToken
=
result
?
1
:
0
;
return
result
;
}
BOOL
QueryElevateForCrtInstall
()
{
// Called to prompt the user that even though they think they won't need
// to elevate, they actually will because of the CRT install.
if
(
IsCrtInstalled
())
{
// CRT is already installed - no need to prompt
return
TRUE
;
}
LONGLONG
elevated
;
HRESULT
hr
=
BalGetNumericVariable
(
L"WixBundleElevated"
,
&
elevated
);
if
(
SUCCEEDED
(
hr
)
&&
elevated
)
{
// Already elevated - no need to prompt
return
TRUE
;
}
LOC_STRING
*
locStr
;
hr
=
LocGetString
(
_wixLoc
,
L"#(loc.ElevateForCRTInstall)"
,
&
locStr
);
if
(
FAILED
(
hr
))
{
BalLogError
(
hr
,
"Failed to get ElevateForCRTInstall string"
);
return
FALSE
;
}
return
::
MessageBoxW
(
_hWnd
,
locStr
->
wzText
,
_theme
->
sczCaption
,
MB_YESNO
)
!=
IDNO
;
}
HRESULT
EvaluateConditions
()
{
HRESULT
hr
=
S_OK
;
...
...
@@ -2498,6 +2574,8 @@ public:
}
}
pEngine
->
SetVariableNumeric
(
L"CRTInstalled"
,
IsCrtInstalled
()
?
1
:
0
);
_wixLoc
=
nullptr
;
memset
(
&
_bundle
,
0
,
sizeof
(
_bundle
));
memset
(
&
_conditions
,
0
,
sizeof
(
_conditions
));
...
...
@@ -2525,6 +2603,8 @@ public:
_suppressRepair
=
FALSE
;
_modifying
=
FALSE
;
_crtInstalledToken
=
-
1
;
_overridableVariables
=
nullptr
;
_taskbarList
=
nullptr
;
_taskbarButtonCreatedMessage
=
UINT_MAX
;
...
...
@@ -2606,6 +2686,8 @@ private:
BOOL
_suppressRepair
;
BOOL
_modifying
;
int
_crtInstalledToken
;
STRINGDICT_HANDLE
_overridableVariables
;
ITaskbarList3
*
_taskbarList
;
...
...
Tools/msi/bundle/bundle.targets
Dosyayı görüntüle @
e4969f5d
...
...
@@ -10,6 +10,8 @@
<OutputName
Condition=
"!$(BuildForRelease)"
>
$(OutputName)-$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber).$(RevisionNumber)
</OutputName>
<OutputName
Condition=
"$(Platform) == 'x64'"
>
$(OutputName)-amd64
</OutputName>
<OutputName
Condition=
"'$(OutputSuffix)' != ''"
>
$(OutputName)-$(OutputSuffix)
</OutputName>
<OutputName
Condition=
"'$(Configuration)' == 'Debug'"
>
$(OutputName)-d
</OutputName>
<TargetName>
$(OutputName)
</TargetName>
<OutputPath>
$(OutputPath)en-us\
</OutputPath>
<OutDir>
$(OutputPath)
</OutDir>
...
...
@@ -43,6 +45,7 @@
<Content
Include=
"SideBar.png"
/>
</ItemGroup>
<ItemGroup>
<EmbeddedResource
Include=
"bundle.wxl"
/>
<WxlTemplate
Include=
"*_en-US.wxl_template"
/>
</ItemGroup>
<ItemGroup>
...
...
Tools/msi/bundle/
postinstall_en-US.wxl_template
→
Tools/msi/bundle/
bundle.wxl
Dosyayı görüntüle @
e4969f5d
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization
Culture=
"en-us"
xmlns=
"http://schemas.microsoft.com/wix/2006/localization"
>
<String
Id=
"CRTDescription"
>
C Runtime Update (KB2999226)
</String>
<String
Id=
"CompileAllDescription"
>
Precompiling standard library
</String>
</WixLocalization>
Tools/msi/bundle/packagegroups/crt.wxs
Dosyayı görüntüle @
e4969f5d
...
...
@@ -2,6 +2,11 @@
<Wix
xmlns=
"http://schemas.microsoft.com/wix/2006/wi"
>
<Fragment>
<PackageGroup
Id=
"crt"
>
<PackageGroupRef
Id=
"crt_14.0_v6.0"
/>
<PackageGroupRef
Id=
"crt_14.0_v6.1"
/>
<PackageGroupRef
Id=
"crt_14.0_v6.2"
/>
<PackageGroupRef
Id=
"crt_14.0_v6.3"
/>
<MsiPackage
Id=
"crt_AllUsers"
SourceFile=
"crt.msi"
Compressed=
"$(var.CompressMSI)"
...
...
@@ -22,4 +27,42 @@
</MsiPackage>
</PackageGroup>
</Fragment>
<?foreach ver in v6.0;v6.1;v6.2;v6.3 ?>
<?if "$(var.ver)" = "v6.0" ?>
<?define msuver=6.0 ?>
<?elseif "$(var.ver)" = "v6.1" ?>
<?define msuver=6.1 ?>
<?elseif "$(var.ver)" = "v6.2" ?>
<?define msuver=8-RT ?>
<?elseif "$(var.ver)" = "v6.3" ?>
<?define msuver=8.1 ?>
<?else ?>
<?error unknown version $(var.ver) ?>
<?endif ?>
<Fragment>
<PackageGroup
Id=
"crt_14.0_$(var.ver)"
>
<MsuPackage
Id=
"crt_14.0_$(var.ver)_x86"
KB=
"2999226"
SourceFile=
"!(bindpath.redist)\Windows$(var.msuver)-KB2999226-x86.msu"
DisplayName=
"!(loc.CRTDescription)"
Description=
"!(loc.CRTDescription)"
Compressed=
"$(var.CompressMSI)"
DownloadUrl=
"$(var.DownloadUrl)"
InstallCondition=
"not CRTInstalled and VersionNT = $(var.ver) and not VersionNT64 and (Include_core or Include_exe or Include_launcher or Include_pip)"
/>
<MsuPackage
Id=
"crt_14.0_$(var.ver)_x64"
KB=
"2999226"
SourceFile=
"!(bindpath.redist)\Windows$(var.msuver)-KB2999226-x64.msu"
DisplayName=
"!(loc.CRTDescription)"
Description=
"!(loc.CRTDescription)"
Compressed=
"$(var.CompressMSI)"
DownloadUrl=
"$(var.DownloadUrl)"
InstallCondition=
"not CRTInstalled and VersionNT64 = $(var.ver) and (Include_core or Include_exe or Include_launcher or Include_pip)"
/>
</PackageGroup>
</Fragment>
<?undef msuver ?>
<?endforeach ?>
</Wix>
\ No newline at end of file
Tools/msi/crt/crt.wixproj
Dosyayı görüntüle @
e4969f5d
...
...
@@ -10,7 +10,7 @@
<Import
Project=
"..\msi.props"
/>
<ItemGroup>
<Compile
Include=
"crt.wxs"
/>
<Compile
Include=
"crt_files.
$(VisualStudioVersion).
wxs"
/>
<Compile
Include=
"crt_files.wxs"
/>
</ItemGroup>
<ItemGroup>
<EmbeddedResource
Include=
"*.wxl"
/>
...
...
Tools/msi/crt/crt_files.14.0.wxs
deleted
100644 → 0
Dosyayı görüntüle @
a473b9da
<?xml version="1.0" encoding="UTF-8"?>
<Wix
xmlns=
"http://schemas.microsoft.com/wix/2006/wi"
>
<Fragment>
<?if $(var.Platform)~=x64 ?>
<?define appcrt140Guid={CC160FA9-B519-38EC-B358-B4146E8506C8}?>
<?define desktopcrt140Guid={4DB78A79-8D7F-35DD-B0E8-736DE44D25F3}?>
<?define vcruntime140Guid={B33258FD-750C-3B42-8BE4-535B48E97DB4}?>
<?else ?>
<?define appcrt140Guid={E3854F9C-4CFB-3B85-90BD-86AA22D82DC8}?>
<?define desktopcrt140Guid={46EAB1CD-C362-3139-BD7E-D8782E65253A}?>
<?define vcruntime140Guid={E8E39D3B-4F35-36D8-B892-4B28336FE041}?>
<?endif ?>
<ComponentGroup
Id=
"crt_files"
>
<Component
Id=
"appcrt140.dll_LM"
Directory=
"SystemInstallDirectory"
Guid=
"$(var.appcrt140Guid)"
Shared=
"yes"
SharedDllRefCount=
"yes"
>
<Condition>
ALLUSERS=1
</Condition>
<File
Id=
"appcrt140.dll_LM"
Source=
"!(bindpath.crt)\appcrt140.dll"
/>
</Component>
<Component
Id=
"desktopcrt140.dll_LM"
Directory=
"SystemInstallDirectory"
Guid=
"$(var.desktopcrt140Guid)"
Shared=
"yes"
SharedDllRefCount=
"yes"
>
<Condition>
ALLUSERS=1
</Condition>
<File
Id=
"desktopcrt140.dll_LM"
Source=
"!(bindpath.crt)\desktopcrt140.dll"
/>
</Component>
<Component
Id=
"vcruntime140.dll_LM"
Directory=
"SystemInstallDirectory"
Guid=
"$(var.vcruntime140Guid)"
Shared=
"yes"
SharedDllRefCount=
"yes"
>
<Condition>
ALLUSERS=1
</Condition>
<File
Id=
"vcruntime140.dll_LM"
Source=
"!(bindpath.crt)\vcruntime140.dll"
/>
</Component>
<Component
Id=
"appcrt140.dll_CU"
Directory=
"InstallDirectory"
Guid=
"*"
>
<Condition>
NOT ALLUSERS=1
</Condition>
<File
Id=
"appcrt140.dll_CU"
Source=
"!(bindpath.crt)\appcrt140.dll"
/>
</Component>
<Component
Id=
"desktopcrt140.dll_CU"
Directory=
"InstallDirectory"
Guid=
"*"
>
<Condition>
NOT ALLUSERS=1
</Condition>
<File
Id=
"desktopcrt140.dll_CU"
Source=
"!(bindpath.crt)\desktopcrt140.dll"
/>
</Component>
<Component
Id=
"vcruntime140.dll_CU"
Directory=
"InstallDirectory"
Guid=
"*"
>
<Condition>
NOT ALLUSERS=1
</Condition>
<File
Id=
"vcruntime140.dll_CU"
Source=
"!(bindpath.crt)\vcruntime140.dll"
/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
Tools/msi/crt/crt_files.
12.0.
wxs
→
Tools/msi/crt/crt_files.wxs
Dosyayı görüntüle @
e4969f5d
...
...
@@ -2,18 +2,18 @@
<Wix
xmlns=
"http://schemas.microsoft.com/wix/2006/wi"
>
<Fragment>
<?if $(var.Platform)~=x64 ?>
<?define
msvcr120Guid={0835C947-D6D2-4E52-AF14-0231D04E88EA
}?>
<?define
vcruntime140Guid={B33258FD-750C-3B42-8BE4-535B48E97DB4
}?>
<?else ?>
<?define
msvcr120Guid={E5B92048-5859-4AF1-AEAD-B97EBF00B087}
?>
<?define
vcruntime140Guid={E8E39D3B-4F35-36D8-B892-4B28336FE041}
?>
<?endif ?>
<ComponentGroup
Id=
"crt_files"
>
<Component
Id=
"
msvcr120.dll_LM"
Directory=
"SystemInstallDirectory"
Guid=
"$(var.msvcr12
0Guid)"
Shared=
"yes"
SharedDllRefCount=
"yes"
>
<Component
Id=
"
vcruntime140.dll_LM"
Directory=
"SystemInstallDirectory"
Guid=
"$(var.vcruntime14
0Guid)"
Shared=
"yes"
SharedDllRefCount=
"yes"
>
<Condition>
ALLUSERS=1
</Condition>
<File
Id=
"
msvcr120.dll_LM"
Source=
"!(bindpath.crt)\msvcr12
0.dll"
/>
<File
Id=
"
vcruntime140.dll_LM"
Source=
"!(bindpath.crt)\vcruntime14
0.dll"
/>
</Component>
<Component
Id=
"
msvcr12
0.dll_CU"
Directory=
"InstallDirectory"
Guid=
"*"
>
<Component
Id=
"
vcruntime14
0.dll_CU"
Directory=
"InstallDirectory"
Guid=
"*"
>
<Condition>
NOT ALLUSERS=1
</Condition>
<File
Id=
"
msvcr120.dll_CU"
Source=
"!(bindpath.crt)\msvcr12
0.dll"
/>
<File
Id=
"
vcruntime140.dll_CU"
Source=
"!(bindpath.crt)\vcruntime14
0.dll"
/>
</Component>
</ComponentGroup>
</Fragment>
...
...
Tools/msi/msi.props
Dosyayı görüntüle @
e4969f5d
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"4.0"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
TreatAsLocalProperty=
"ReleaseUri"
>
<PropertyGroup>
<TargetName>
$(OutputName)
</TargetName>
<DefineSolutionProperties>
false
</DefineSolutionProperties>
<TreatWarningsAsErrors>
false
</TreatWarningsAsErrors>
<SuppressIces>
$(SuppressIces);ICE03;ICE57;ICE61
</SuppressIces>
...
...
@@ -48,10 +49,8 @@
<OutputPath
Condition=
"!HasTrailingSlash($(OutputPath))"
>
$(OutputPath)\
</OutputPath>
<OutDir>
$(OutputPath)
</OutDir>
<ReuseCabinetCache>
true
</ReuseCabinetCache>
<CRTModule
Condition=
"'$(VisualStudioVersion)' == '12.0'"
>
$(CommonProgramFiles)\Merge Modules\Microsoft_VC120_CRT_$(Platform).msm
</CRTModule>
<CRTModule
Condition=
"'$(VisualStudioVersion)' == '14.0'"
>
$(CommonProgramFiles)\Merge Modules\Microsoft_VC140_CRT_$(Platform).msm
</CRTModule>
<CRTRedist
Condition=
"'$(VisualStudioVersion)' == '12.0'"
>
$([System.IO.Path]::GetFullPath(`$(VS120COMNTOOLS)\..\..\VC\redist\$(Platform)\Microsoft.VC120.CRT`))
</CRTRedist>
<CRTRedist
Condition=
"'$(VisualStudioVersion)' == '14.0'"
>
$([System.IO.Path]::GetFullPath(`$(VS140COMNTOOLS)\..\..\VC\redist\$(Platform)\Microsoft.VC140.CRT`))
</CRTRedist>
<CRTRedist
Condition=
""
>
$([System.IO.Path]::GetFullPath(`$(VS140COMNTOOLS)\..\..\VC\redist\$(Platform)\Microsoft.VC140.CRT`))
</CRTRedist>
<CRTRedist
Condition=
"'$(CRTRedist)' != '' and !Exists($(CRTRedist))"
>
$(MSBuildThisFileDirectory)\redist\$(Platform)
</CRTRedist>
<CRTRedist
Condition=
"'$(CRTRedist)' != '' and !Exists($(CRTRedist))"
></CRTRedist>
<RevisionNumber>
$(ReleaseLevelNumber)
</RevisionNumber>
...
...
@@ -72,9 +71,6 @@
NextMajorVersionNumber=$(MajorVersionNumber).$([msbuild]::Add($(MinorVersionNumber), 1)).0.0;
PyDebugExt=$(PyDebugExt);
</DefineConstants>
<DefineConstants
Condition=
"'$(CRTModule)' != '' and Exists($(CRTModule))"
>
$(DefineConstants);CRTModule=$(CRTModule);
</DefineConstants>
<DefineConstants
Condition=
"'$(CRTRedist)' != ''"
>
$(DefineConstants);CRTRedist=$(CRTRedist);
</DefineConstants>
...
...
@@ -115,6 +111,9 @@
<LinkerBindInputPaths
Include=
"$(CRTRedist)"
Condition=
"'$(CRTRedist)' != ''"
>
<BindName>
crt
</BindName>
</LinkerBindInputPaths>
<LinkerBindInputPaths
Include=
"$(MSBuildThisFileDirectory)\redist"
>
<BindName>
redist
</BindName>
</LinkerBindInputPaths>
</ItemGroup>
<Target
Name=
"_ValidateMsiProps"
BeforeTargets=
"PrepareForBuild"
>
...
...
Tools/msi/redist/README.txt
0 → 100644
Dosyayı görüntüle @
e4969f5d
This folder is intentianally left empty in the repository.
The following dependencies may be copied here if they cannot be detected
automatically by the build scripts:
redist\Windows6.0-KB2999226-x64.msu
redist\Windows6.0-KB2999226-x86.msu
redist\Windows6.1-KB2999226-x64.msu
redist\Windows6.1-KB2999226-x86.msu
redist\Windows8.1-KB2999226-x64.msu
redist\Windows8.1-KB2999226-x86.msu
redist\Windows8-RT-KB2999226-x64.msu
redist\Windows8-RT-KB2999226-x86.msu
redist\x64\vcruntime140.dll
redist\x86\vcruntime140.dll
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment