diff options
Diffstat (limited to 'src/ext/NetFx')
70 files changed, 4498 insertions, 0 deletions
diff --git a/src/ext/NetFx/CustomizedNativeRecommendedRules.ruleset b/src/ext/NetFx/CustomizedNativeRecommendedRules.ruleset new file mode 100644 index 00000000..142b141c --- /dev/null +++ b/src/ext/NetFx/CustomizedNativeRecommendedRules.ruleset | |||
@@ -0,0 +1,8 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <RuleSet Name="Customized Microsoft Native Recommended Rules" Description="Microsoft Native Recommended Rules, -C26812" ToolsVersion="16.0"> | ||
3 | <Include Path="nativerecommendedrules.ruleset" Action="Default" /> | ||
4 | <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native"> | ||
5 | <!-- We need C style enums since we support BAs written in C --> | ||
6 | <Rule Id="C26812" Action="None" /> | ||
7 | </Rules> | ||
8 | </RuleSet> \ No newline at end of file | ||
diff --git a/src/ext/NetFx/Directory.Build.props b/src/ext/NetFx/Directory.Build.props new file mode 100644 index 00000000..b3c6287c --- /dev/null +++ b/src/ext/NetFx/Directory.Build.props | |||
@@ -0,0 +1,27 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | <!-- | ||
4 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.props | ||
5 | then update all of the repos. | ||
6 | --> | ||
7 | <Project> | ||
8 | <PropertyGroup> | ||
9 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
10 | <EnableSourceLink Condition=" '$(NCrunch)' == '1' ">false</EnableSourceLink> | ||
11 | <MSBuildWarningsAsMessages>MSB3246</MSBuildWarningsAsMessages> | ||
12 | |||
13 | <ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName> | ||
14 | <BaseOutputPath>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\build\))</BaseOutputPath> | ||
15 | <BaseIntermediateOutputPath>$(BaseOutputPath)obj\$(ProjectName)\</BaseIntermediateOutputPath> | ||
16 | <OutputPath>$(BaseOutputPath)$(Configuration)\</OutputPath> | ||
17 | |||
18 | <Authors>WiX Toolset Team</Authors> | ||
19 | <Company>WiX Toolset</Company> | ||
20 | <Copyright>Copyright (c) .NET Foundation and contributors. All rights reserved.</Copyright> | ||
21 | <PackageLicenseExpression>MS-RL</PackageLicenseExpression> | ||
22 | <Product>WiX Toolset</Product> | ||
23 | </PropertyGroup> | ||
24 | |||
25 | <Import Project="Directory$(MSBuildProjectExtension).props" Condition=" Exists('Directory$(MSBuildProjectExtension).props') " /> | ||
26 | <Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " /> | ||
27 | </Project> | ||
diff --git a/src/ext/NetFx/Directory.Build.targets b/src/ext/NetFx/Directory.Build.targets new file mode 100644 index 00000000..2fcc765a --- /dev/null +++ b/src/ext/NetFx/Directory.Build.targets | |||
@@ -0,0 +1,51 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | <!-- | ||
4 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.targets | ||
5 | then update all of the repos. | ||
6 | --> | ||
7 | <!-- | ||
8 | Replace PackageReferences with ProjectReferences when the projects can be found in .sln. | ||
9 | See the original here: https://github.com/dotnet/sdk/issues/1151#issuecomment-385133284 | ||
10 | --> | ||
11 | <Project> | ||
12 | <PropertyGroup> | ||
13 | <ReplacePackageReferences>true</ReplacePackageReferences> | ||
14 | <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath> | ||
15 | <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath> | ||
16 | </PropertyGroup> | ||
17 | |||
18 | <Choose> | ||
19 | <When Condition="$(ReplacePackageReferences) AND '$(TheSolutionPath)' != '' AND '$(TheSolutionPath)' != '*undefined*' AND Exists('$(TheSolutionPath)')"> | ||
20 | |||
21 | <PropertyGroup> | ||
22 | <SolutionFileContent>$([System.IO.File]::ReadAllText($(TheSolutionPath)))</SolutionFileContent> | ||
23 | <SmartSolutionDir>$([System.IO.Path]::GetDirectoryName( $(TheSolutionPath) ))</SmartSolutionDir> | ||
24 | <RegexPattern>(?<="[PackageName]", ")(.*)(?=", ")</RegexPattern> | ||
25 | </PropertyGroup> | ||
26 | |||
27 | <ItemGroup> | ||
28 | <!-- Keep the identity of the PackageReference --> | ||
29 | <SmartPackageReference Include="@(PackageReference)"> | ||
30 | <PackageName>%(Identity)</PackageName> | ||
31 | <InSolution>$(SolutionFileContent.Contains('\%(Identity).csproj'))</InSolution> | ||
32 | </SmartPackageReference> | ||
33 | |||
34 | <!-- Filter them by mapping them to another ItemGroup using the WithMetadataValue item function --> | ||
35 | <PackageInSolution Include="@(SmartPackageReference->WithMetadataValue('InSolution', True))"> | ||
36 | <Pattern>$(RegexPattern.Replace('[PackageName]','%(PackageName)') )</Pattern> | ||
37 | <SmartPath>$([System.Text.RegularExpressions.Regex]::Match('$(SolutionFileContent)', '%(Pattern)'))</SmartPath> | ||
38 | </PackageInSolution> | ||
39 | |||
40 | <ProjectReference Include="@(PackageInSolution->'$(SmartSolutionDir)\%(SmartPath)' )"/> | ||
41 | |||
42 | <!-- Remove the package references that are now referenced as projects --> | ||
43 | <PackageReference Remove="@(PackageInSolution->'%(PackageName)')"/> | ||
44 | </ItemGroup> | ||
45 | |||
46 | </When> | ||
47 | </Choose> | ||
48 | |||
49 | <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " /> | ||
50 | <Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " /> | ||
51 | </Project> | ||
diff --git a/src/ext/NetFx/Directory.csproj.props b/src/ext/NetFx/Directory.csproj.props new file mode 100644 index 00000000..81d24ad1 --- /dev/null +++ b/src/ext/NetFx/Directory.csproj.props | |||
@@ -0,0 +1,13 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | <!-- | ||
3 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\CSharp.Build.props | ||
4 | then update all of the repos. | ||
5 | --> | ||
6 | <Project> | ||
7 | <PropertyGroup> | ||
8 | <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> | ||
9 | <SignAssembly>true</SignAssembly> | ||
10 | <AssemblyOriginatorKeyFile>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)wix.snk))</AssemblyOriginatorKeyFile> | ||
11 | <NBGV_EmitThisAssemblyClass>false</NBGV_EmitThisAssemblyClass> | ||
12 | </PropertyGroup> | ||
13 | </Project> | ||
diff --git a/src/ext/NetFx/Directory.csproj.targets b/src/ext/NetFx/Directory.csproj.targets new file mode 100644 index 00000000..c3270426 --- /dev/null +++ b/src/ext/NetFx/Directory.csproj.targets | |||
@@ -0,0 +1,26 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | <!-- | ||
3 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.csproj.targets | ||
4 | then update all of the repos. | ||
5 | --> | ||
6 | <Project> | ||
7 | <PropertyGroup> | ||
8 | <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation> | ||
9 | <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile> | ||
10 | </PropertyGroup> | ||
11 | |||
12 | <Target Name="SetNuspecProperties" DependsOnTargets="InitializeSourceControlInformation" AfterTargets="GetBuildVersion" | ||
13 | Condition=" Exists('$(MSBuildProjectName).nuspec') "> | ||
14 | <PropertyGroup> | ||
15 | <ProjectUrl Condition=" '$(ProjectUrl)'=='' and '$(PrivateRepositoryUrl)'!='' ">$(PrivateRepositoryUrl.Replace('.git',''))</ProjectUrl> | ||
16 | |||
17 | <NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile> | ||
18 | <NuspecBasePath Condition=" '$(NuspecBasePath)'=='' ">$(OutputPath)..\</NuspecBasePath> | ||
19 | <NuspecProperties>$(NuspecProperties);Id=$(PackageId);Authors=$(Authors);Copyright=$(Copyright);Description=$(Description);Title=$(Title)</NuspecProperties> | ||
20 | <NuspecProperties>$(NuspecProperties);Version=$(PackageVersion);RepositoryCommit=$(SourceRevisionId);RepositoryType=$(RepositoryType);RepositoryUrl=$(PrivateRepositoryUrl);ProjectFolder=$(MSBuildProjectDirectory)\;ProjectUrl=$(ProjectUrl)</NuspecProperties> | ||
21 | <PublishRepositoryUrl>true</PublishRepositoryUrl> | ||
22 | <SymbolPackageFormat>snupkg</SymbolPackageFormat> | ||
23 | </PropertyGroup> | ||
24 | </Target> | ||
25 | |||
26 | </Project> | ||
diff --git a/src/ext/NetFx/Directory.vcxproj.props b/src/ext/NetFx/Directory.vcxproj.props new file mode 100644 index 00000000..47c2c143 --- /dev/null +++ b/src/ext/NetFx/Directory.vcxproj.props | |||
@@ -0,0 +1,115 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project> | ||
5 | <PropertyGroup> | ||
6 | <Platform Condition=" '$(Platform)' == '' OR '$(Platform)' == 'AnyCPU' ">Win32</Platform> | ||
7 | <IntDir>$(BaseIntermediateOutputPath)$(Configuration)\$(Platform)\</IntDir> | ||
8 | <OutDir>$(OutputPath)$(Platform)\</OutDir> | ||
9 | |||
10 | <!-- NBGV properties --> | ||
11 | <AssemblyCompany>$(Company)</AssemblyCompany> | ||
12 | <AssemblyCopyright>$(Copyright)</AssemblyCopyright> | ||
13 | |||
14 | <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers> | ||
15 | <NuGetTargetMoniker>native,Version=v0.0</NuGetTargetMoniker> | ||
16 | </PropertyGroup> | ||
17 | |||
18 | <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' AND '$(VisualStudioVersion)'>='15.0'"> | ||
19 | <WindowsTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion> | ||
20 | </PropertyGroup> | ||
21 | |||
22 | <PropertyGroup> | ||
23 | <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)CustomizedNativeRecommendedRules.ruleset</CodeAnalysisRuleSet> | ||
24 | </PropertyGroup> | ||
25 | |||
26 | <ItemDefinitionGroup> | ||
27 | <ClCompile> | ||
28 | <DisableSpecificWarnings>$(DisableSpecificCompilerWarnings)</DisableSpecificWarnings> | ||
29 | <WarningLevel>Level4</WarningLevel> | ||
30 | <AdditionalIncludeDirectories>$(ProjectDir)inc;$(MSBuildProjectDirectory);$(IntDir);$(SqlCESdkIncludePath);$(ProjectAdditionalIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||
31 | <PreprocessorDefinitions>WIN32;_WINDOWS;_WIN32_MSI=500;_WIN32_WINNT=0x0501;$(ArmPreprocessorDefinitions);$(UnicodePreprocessorDefinitions);_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
32 | <PrecompiledHeader>Use</PrecompiledHeader> | ||
33 | <PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile> | ||
34 | <CallingConvention Condition="'$(Platform)'=='Win32'">StdCall</CallingConvention> | ||
35 | <TreatWarningAsError>true</TreatWarningAsError> | ||
36 | <ExceptionHandling>false</ExceptionHandling> | ||
37 | <AdditionalOptions>-YlprecompDefine</AdditionalOptions> | ||
38 | <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions> | ||
39 | <MultiProcessorCompilation Condition=" $(NUMBER_OF_PROCESSORS) > 4 ">true</MultiProcessorCompilation> | ||
40 | </ClCompile> | ||
41 | <ResourceCompile> | ||
42 | <PreprocessorDefinitions>$(ArmPreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
43 | <AdditionalIncludeDirectories>$(ProjectAdditionalResourceIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||
44 | </ResourceCompile> | ||
45 | <Lib> | ||
46 | <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ProjectAdditionalLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||
47 | </Lib> | ||
48 | <Link> | ||
49 | <SubSystem>$(ProjectSubSystem)</SubSystem> | ||
50 | <ModuleDefinitionFile>$(ProjectModuleDefinitionFile)</ModuleDefinitionFile> | ||
51 | <NoEntryPoint>$(ResourceOnlyDll)</NoEntryPoint> | ||
52 | <GenerateDebugInformation>true</GenerateDebugInformation> | ||
53 | <AdditionalDependencies>$(ProjectAdditionalLinkLibraries);advapi32.lib;comdlg32.lib;user32.lib;oleaut32.lib;gdi32.lib;shell32.lib;ole32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||
54 | <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ArmLibraryDirectories);$(ProjectAdditionalLinkLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||
55 | <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions> | ||
56 | </Link> | ||
57 | </ItemDefinitionGroup> | ||
58 | |||
59 | <ItemDefinitionGroup Condition=" '$(Platform)'=='Win32' and '$(PlatformToolset)'!='v100'"> | ||
60 | <ClCompile> | ||
61 | <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet> | ||
62 | </ClCompile> | ||
63 | </ItemDefinitionGroup> | ||
64 | <ItemDefinitionGroup Condition=" '$(Platform)'=='arm' "> | ||
65 | <ClCompile> | ||
66 | <CallingConvention>CDecl</CallingConvention> | ||
67 | </ClCompile> | ||
68 | </ItemDefinitionGroup> | ||
69 | <ItemDefinitionGroup Condition=" '$(ConfigurationType)'=='StaticLibrary' "> | ||
70 | <ClCompile> | ||
71 | <DebugInformationFormat>OldStyle</DebugInformationFormat> | ||
72 | <OmitDefaultLibName>true</OmitDefaultLibName> | ||
73 | <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries> | ||
74 | </ClCompile> | ||
75 | </ItemDefinitionGroup> | ||
76 | <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' "> | ||
77 | <ClCompile> | ||
78 | <Optimization>Disabled</Optimization> | ||
79 | <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> | ||
80 | <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
81 | <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | ||
82 | </ClCompile> | ||
83 | </ItemDefinitionGroup> | ||
84 | <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' and '$(CLRSupport)'=='true' "> | ||
85 | <ClCompile> | ||
86 | <BasicRuntimeChecks></BasicRuntimeChecks> | ||
87 | <RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary> | ||
88 | </ClCompile> | ||
89 | </ItemDefinitionGroup> | ||
90 | <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' "> | ||
91 | <ClCompile> | ||
92 | <Optimization>MinSpace</Optimization> | ||
93 | <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
94 | <FunctionLevelLinking>true</FunctionLevelLinking> | ||
95 | <IntrinsicFunctions>true</IntrinsicFunctions> | ||
96 | <RuntimeLibrary>MultiThreaded</RuntimeLibrary> | ||
97 | </ClCompile> | ||
98 | <Link> | ||
99 | <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||
100 | <OptimizeReferences>true</OptimizeReferences> | ||
101 | </Link> | ||
102 | </ItemDefinitionGroup> | ||
103 | <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' and '$(CLRSupport)'=='true' "> | ||
104 | <ClCompile> | ||
105 | <BasicRuntimeChecks></BasicRuntimeChecks> | ||
106 | <RuntimeLibrary>MultiThreadedDll</RuntimeLibrary> | ||
107 | </ClCompile> | ||
108 | </ItemDefinitionGroup> | ||
109 | <ItemDefinitionGroup Condition=" '$(CLRSupport)'=='true' "> | ||
110 | <Link> | ||
111 | <KeyFile>$(LinkKeyFile)</KeyFile> | ||
112 | <DelaySign>$(LinkDelaySign)</DelaySign> | ||
113 | </Link> | ||
114 | </ItemDefinitionGroup> | ||
115 | </Project> | ||
diff --git a/src/ext/NetFx/NetFx.wixext.sln b/src/ext/NetFx/NetFx.wixext.sln new file mode 100644 index 00000000..e830aeea --- /dev/null +++ b/src/ext/NetFx/NetFx.wixext.sln | |||
@@ -0,0 +1,75 @@ | |||
1 | | ||
2 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||
3 | # Visual Studio 15 | ||
4 | VisualStudioVersion = 15.0.27130.2010 | ||
5 | MinimumVisualStudioVersion = 15.0.26124.0 | ||
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netfxca", "src\ca\netfxca.vcxproj", "{F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}" | ||
7 | EndProject | ||
8 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "netfx", "src\wixlib\netfx.wixproj", "{45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}" | ||
9 | EndProject | ||
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Netfx.wixext", "src\wixext\WixToolset.Netfx.wixext.csproj", "{F774E291-0563-4DDD-B873-F5C31683CF4B}" | ||
11 | EndProject | ||
12 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.Netfx", "src\test\WixToolsetTest.Netfx\WixToolsetTest.Netfx.csproj", "{AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}" | ||
13 | EndProject | ||
14 | Global | ||
15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
16 | Debug|Any CPU = Debug|Any CPU | ||
17 | Debug|x64 = Debug|x64 | ||
18 | Debug|x86 = Debug|x86 | ||
19 | Release|Any CPU = Release|Any CPU | ||
20 | Release|x64 = Release|x64 | ||
21 | Release|x86 = Release|x86 | ||
22 | EndGlobalSection | ||
23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
24 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|Any CPU.ActiveCfg = Debug|Win32 | ||
25 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|Any CPU.Build.0 = Debug|Win32 | ||
26 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|x64.ActiveCfg = Debug|Win32 | ||
27 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|x86.ActiveCfg = Debug|Win32 | ||
28 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|x86.Build.0 = Debug|Win32 | ||
29 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|Any CPU.ActiveCfg = Release|Win32 | ||
30 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|Any CPU.Build.0 = Release|Win32 | ||
31 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|x64.ActiveCfg = Release|Win32 | ||
32 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|x86.ActiveCfg = Release|Win32 | ||
33 | {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|x86.Build.0 = Release|Win32 | ||
34 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Debug|Any CPU.ActiveCfg = Debug|x86 | ||
35 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Debug|Any CPU.Build.0 = Debug|x86 | ||
36 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Debug|x64.ActiveCfg = Debug|x86 | ||
37 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Debug|x86.ActiveCfg = Debug|x86 | ||
38 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Debug|x86.Build.0 = Debug|x86 | ||
39 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Release|Any CPU.ActiveCfg = Release|x86 | ||
40 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Release|Any CPU.Build.0 = Release|x86 | ||
41 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Release|x64.ActiveCfg = Release|x86 | ||
42 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Release|x86.ActiveCfg = Release|x86 | ||
43 | {45E4A6AC-3190-4E17-83F0-9935FFA5DC2B}.Release|x86.Build.0 = Release|x86 | ||
44 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
45 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
46 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Debug|x64.ActiveCfg = Debug|Any CPU | ||
47 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Debug|x64.Build.0 = Debug|Any CPU | ||
48 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Debug|x86.ActiveCfg = Debug|Any CPU | ||
49 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Debug|x86.Build.0 = Debug|Any CPU | ||
50 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
51 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Release|Any CPU.Build.0 = Release|Any CPU | ||
52 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Release|x64.ActiveCfg = Release|Any CPU | ||
53 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Release|x64.Build.0 = Release|Any CPU | ||
54 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Release|x86.ActiveCfg = Release|Any CPU | ||
55 | {F774E291-0563-4DDD-B873-F5C31683CF4B}.Release|x86.Build.0 = Release|Any CPU | ||
56 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
57 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
58 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Debug|x64.ActiveCfg = Debug|Any CPU | ||
59 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Debug|x64.Build.0 = Debug|Any CPU | ||
60 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Debug|x86.ActiveCfg = Debug|Any CPU | ||
61 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Debug|x86.Build.0 = Debug|Any CPU | ||
62 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
63 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Release|Any CPU.Build.0 = Release|Any CPU | ||
64 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Release|x64.ActiveCfg = Release|Any CPU | ||
65 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Release|x64.Build.0 = Release|Any CPU | ||
66 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Release|x86.ActiveCfg = Release|Any CPU | ||
67 | {AABEF178-D4A2-4EE1-8E00-3EBAB23A5548}.Release|x86.Build.0 = Release|Any CPU | ||
68 | EndGlobalSection | ||
69 | GlobalSection(SolutionProperties) = preSolution | ||
70 | HideSolutionNode = FALSE | ||
71 | EndGlobalSection | ||
72 | GlobalSection(ExtensibilityGlobals) = postSolution | ||
73 | SolutionGuid = {E4566A6B-47D0-4EA0-989A-D763AC39105D} | ||
74 | EndGlobalSection | ||
75 | EndGlobal | ||
diff --git a/src/ext/NetFx/README.md b/src/ext/NetFx/README.md new file mode 100644 index 00000000..a31cfd1d --- /dev/null +++ b/src/ext/NetFx/README.md | |||
@@ -0,0 +1,2 @@ | |||
1 | # NetFx.wixext | ||
2 | WixToolset.NetFx.wixext - .NET Framework WiX Toolset Extension | ||
diff --git a/src/ext/NetFx/appveyor.cmd b/src/ext/NetFx/appveyor.cmd new file mode 100644 index 00000000..d7e705f0 --- /dev/null +++ b/src/ext/NetFx/appveyor.cmd | |||
@@ -0,0 +1,19 @@ | |||
1 | @setlocal | ||
2 | @pushd %~dp0 | ||
3 | @set _C=Release | ||
4 | @if /i "%1"=="debug" set _C=Debug | ||
5 | |||
6 | :: Restore | ||
7 | msbuild -p:Configuration=%_C% -t:Restore || exit /b | ||
8 | |||
9 | :: Build | ||
10 | msbuild -p:Configuration=%_C% src\test\WixToolsetTest.Netfx\WixToolsetTest.Netfx.csproj || exit /b | ||
11 | |||
12 | :: Test | ||
13 | dotnet test -c %_C% --no-build src\test\WixToolsetTest.Netfx || exit /b | ||
14 | |||
15 | :: Pack | ||
16 | msbuild -p:Configuration=%_C% -p:NoBuild=true -t:Pack src\wixext\WixToolset.Netfx.wixext.csproj || exit /b | ||
17 | |||
18 | @popd | ||
19 | @endlocal | ||
diff --git a/src/ext/NetFx/appveyor.yml b/src/ext/NetFx/appveyor.yml new file mode 100644 index 00000000..c53cc9cc --- /dev/null +++ b/src/ext/NetFx/appveyor.yml | |||
@@ -0,0 +1,42 @@ | |||
1 | # Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | # | ||
3 | # Do NOT modify this file. Update the canonical version in Home\repo-template\src\appveyor.yml | ||
4 | # then update all of the repos. | ||
5 | |||
6 | branches: | ||
7 | only: | ||
8 | - master | ||
9 | - develop | ||
10 | |||
11 | image: Visual Studio 2019 | ||
12 | |||
13 | version: 0.0.0.{build} | ||
14 | configuration: Release | ||
15 | |||
16 | environment: | ||
17 | DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
18 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 | ||
19 | NUGET_XMLDOC_MODE: skip | ||
20 | |||
21 | build_script: | ||
22 | - appveyor.cmd | ||
23 | |||
24 | pull_requests: | ||
25 | do_not_increment_build_number: true | ||
26 | |||
27 | nuget: | ||
28 | disable_publish_on_pr: true | ||
29 | |||
30 | skip_branch_with_pr: true | ||
31 | skip_tags: true | ||
32 | |||
33 | artifacts: | ||
34 | - path: build\Release\**\*.nupkg | ||
35 | name: nuget | ||
36 | - path: build\Release\**\*.snupkg | ||
37 | name: snupkg | ||
38 | |||
39 | notifications: | ||
40 | - provider: Slack | ||
41 | incoming_webhook: | ||
42 | secure: p5xuu+4x2JHfwGDMDe5KcG1k7gZxqYc4jWVwvyNZv5cvkubPD2waJs5yXMAXZNN7Z63/3PWHb7q4KoY/99AjauYa1nZ4c5qYqRPFRBKTHfA= | ||
diff --git a/src/ext/NetFx/ca/caDecor.h b/src/ext/NetFx/ca/caDecor.h new file mode 100644 index 00000000..da274650 --- /dev/null +++ b/src/ext/NetFx/ca/caDecor.h | |||
@@ -0,0 +1,13 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | #if defined(_M_ARM64) | ||
6 | #define CUSTOM_ACTION_DECORATION(f) L"Wix4" f L"_A64" | ||
7 | #elif defined(_M_AMD64) | ||
8 | #define CUSTOM_ACTION_DECORATION(f) L"Wix4" f L"_X64" | ||
9 | #elif defined(_M_ARM) | ||
10 | #define CUSTOM_ACTION_DECORATION(f) L"Wix4" f L"_ARM" | ||
11 | #else | ||
12 | #define CUSTOM_ACTION_DECORATION(f) L"Wix4" f L"_X86" | ||
13 | #endif | ||
diff --git a/src/ext/NetFx/ca/cost.h b/src/ext/NetFx/ca/cost.h new file mode 100644 index 00000000..95368eba --- /dev/null +++ b/src/ext/NetFx/ca/cost.h | |||
@@ -0,0 +1,7 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | const UINT COST_NGEN_BLOCKING = 5000; | ||
6 | const UINT COST_NGEN_NONBLOCKING = 500; | ||
7 | |||
diff --git a/src/ext/NetFx/ca/dllmain.cpp b/src/ext/NetFx/ca/dllmain.cpp new file mode 100644 index 00000000..df53f872 --- /dev/null +++ b/src/ext/NetFx/ca/dllmain.cpp | |||
@@ -0,0 +1,26 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | #include "precomp.h" | ||
4 | |||
5 | /******************************************************************** | ||
6 | DllMain - standard entry point for all WiX CustomActions | ||
7 | |||
8 | ********************************************************************/ | ||
9 | extern "C" BOOL WINAPI DllMain( | ||
10 | IN HINSTANCE hInst, | ||
11 | IN ULONG ulReason, | ||
12 | IN LPVOID) | ||
13 | { | ||
14 | switch(ulReason) | ||
15 | { | ||
16 | case DLL_PROCESS_ATTACH: | ||
17 | WcaGlobalInitialize(hInst); | ||
18 | break; | ||
19 | |||
20 | case DLL_PROCESS_DETACH: | ||
21 | WcaGlobalFinalize(); | ||
22 | break; | ||
23 | } | ||
24 | |||
25 | return TRUE; | ||
26 | } | ||
diff --git a/src/ext/NetFx/ca/netfxca.cpp b/src/ext/NetFx/ca/netfxca.cpp new file mode 100644 index 00000000..3a71babf --- /dev/null +++ b/src/ext/NetFx/ca/netfxca.cpp | |||
@@ -0,0 +1,823 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | #include "precomp.h" | ||
4 | |||
5 | #define NGEN_DEBUG 0x0001 | ||
6 | #define NGEN_NODEP 0x0002 | ||
7 | #define NGEN_PROFILE 0x0004 | ||
8 | #define NGEN_32BIT 0x0008 | ||
9 | #define NGEN_64BIT 0x0010 | ||
10 | |||
11 | #define NGEN_TIMEOUT 60000 // 60 seconds | ||
12 | |||
13 | // If you change one of these strings, be sure to change the appropriate EmptyFormattedLength variable right below | ||
14 | LPCWSTR vpwzUnformattedQuotedFile = L"\"[#%s]\""; | ||
15 | LPCWSTR vpwzUnformattedQuotedDirectory = L"\"[%s]\\\""; | ||
16 | |||
17 | // These represent the length of the above strings in the case that the property resolves to an empty string | ||
18 | const DWORD EMPTY_FORMATTED_LENGTH_QUOTED_FILE = 2; | ||
19 | const DWORD EMPTY_FORMATTED_LENGTH_QUOTED_DIRECTORY = 3; | ||
20 | |||
21 | LPCWSTR vcsFileId = | ||
22 | L"SELECT `File` FROM `File` WHERE `File`=?"; | ||
23 | enum eFileId { fiFile = 1 }; | ||
24 | |||
25 | LPCWSTR vcsNgenQuery = | ||
26 | L"SELECT `Wix4NetFxNativeImage`.`File_`, `Wix4NetFxNativeImage`.`Wix4NetFxNativeImage`, `Wix4NetFxNativeImage`.`Priority`, `Wix4NetFxNativeImage`.`Attributes`, `Wix4NetFxNativeImage`.`File_Application`, `Wix4NetFxNativeImage`.`Directory_ApplicationBase`, `File`.`Component_` " | ||
27 | L"FROM `Wix4NetFxNativeImage`, `File` WHERE `File`.`File`=`Wix4NetFxNativeImage`.`File_`"; | ||
28 | enum eNgenQuery { ngqFile = 1, ngqId, ngqPriority, ngqAttributes, ngqFileApp, ngqDirAppBase, ngqComponent }; | ||
29 | |||
30 | LPCWSTR vcsNgenGac = | ||
31 | L"SELECT `MsiAssembly`.`File_Application` " | ||
32 | L"FROM `File`, `MsiAssembly` WHERE `File`.`Component_`=`MsiAssembly`.`Component_` AND `File`.`File`=?"; | ||
33 | enum eNgenGac { nggApplication = 1 }; | ||
34 | |||
35 | LPCWSTR vcsNgenStrongName = | ||
36 | L"SELECT `Name`,`Value` FROM `MsiAssemblyName` WHERE `Component_`=?"; | ||
37 | enum eNgenStrongName { ngsnName = 1, ngsnValue }; | ||
38 | |||
39 | // Searches subdirectories of the given path for the highest version of ngen.exe available | ||
40 | static HRESULT GetNgenVersion( | ||
41 | __in LPWSTR pwzParentPath, | ||
42 | __out LPWSTR* ppwzVersion | ||
43 | ) | ||
44 | { | ||
45 | Assert(pwzParentPath); | ||
46 | |||
47 | HRESULT hr = S_OK; | ||
48 | DWORD dwError = 0; | ||
49 | DWORD dwNgenFileFlags = 0; | ||
50 | |||
51 | LPWSTR pwzVersionSearch = NULL; | ||
52 | LPWSTR pwzNgen = NULL; | ||
53 | LPWSTR pwzTemp = NULL; | ||
54 | LPWSTR pwzTempVersion = NULL; | ||
55 | DWORD dwMaxMajorVersion = 0; // This stores the highest major version we've seen so far | ||
56 | DWORD dwMaxMinorVersion = 0; // This stores the minor version of the highest major version we've seen so far | ||
57 | DWORD dwMajorVersion = 0; // This stores the major version of the directory we're currently considering | ||
58 | DWORD dwMinorVersion = 0; // This stores the minor version of the directory we're currently considering | ||
59 | BOOL fFound = TRUE; | ||
60 | WIN32_FIND_DATAW wfdVersionDirectories; | ||
61 | HANDLE hFind = INVALID_HANDLE_VALUE; | ||
62 | |||
63 | hr = StrAllocFormatted(&pwzVersionSearch, L"%s*", pwzParentPath); | ||
64 | ExitOnFailure(hr, "failed to create outer directory search string from string %ls", pwzParentPath); | ||
65 | hFind = FindFirstFileW(pwzVersionSearch, &wfdVersionDirectories); | ||
66 | if (hFind == INVALID_HANDLE_VALUE) | ||
67 | { | ||
68 | ExitWithLastError(hr, "failed to call FindFirstFileW with string %ls", pwzVersionSearch); | ||
69 | } | ||
70 | |||
71 | while (fFound) | ||
72 | { | ||
73 | pwzTempVersion = (LPWSTR)&(wfdVersionDirectories.cFileName); | ||
74 | |||
75 | // Explicitly exclude v1.1.4322, which isn't backwards compatible and is not supported | ||
76 | if (wfdVersionDirectories.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) | ||
77 | { | ||
78 | if (0 != lstrcmpW(L"v1.1.4322", pwzTempVersion)) | ||
79 | { | ||
80 | // A potential candidate directory was found to run ngen from - let's make sure ngen actually exists here | ||
81 | hr = StrAllocFormatted(&pwzNgen, L"%s%s\\ngen.exe", pwzParentPath, pwzTempVersion); | ||
82 | ExitOnFailure(hr, "failed to create inner ngen search string with strings %ls and %ls", pwzParentPath, pwzTempVersion); | ||
83 | |||
84 | // If Ngen.exe does exist as a file here, then let's check the file version | ||
85 | if (FileExistsEx(pwzNgen, &dwNgenFileFlags) && (0 == (dwNgenFileFlags & FILE_ATTRIBUTE_DIRECTORY))) | ||
86 | { | ||
87 | hr = FileVersion(pwzNgen, &dwMajorVersion, &dwMinorVersion); | ||
88 | |||
89 | if (FAILED(hr)) | ||
90 | { | ||
91 | WcaLog(LOGMSG_VERBOSE, "Failed to get version of %ls - continuing", pwzNgen); | ||
92 | } | ||
93 | else if (dwMajorVersion > dwMaxMajorVersion || (dwMajorVersion == dwMaxMajorVersion && dwMinorVersion > dwMaxMinorVersion)) | ||
94 | { | ||
95 | // If the version we found is the highest we've seen so far in this search, it will be our new best-so-far candidate | ||
96 | hr = StrAllocString(ppwzVersion, pwzTempVersion, 0); | ||
97 | ExitOnFailure(hr, "failed to copy temp version string %ls to version string", pwzTempVersion); | ||
98 | // Add one for the backslash after the directory name | ||
99 | WcaLog(LOGMSG_VERBOSE, "Found highest-so-far version of ngen.exe (in directory %ls, version %u.%u.%u.%u)", *ppwzVersion, (DWORD)HIWORD(dwMajorVersion), (DWORD)LOWORD(dwMajorVersion), (DWORD)HIWORD(dwMinorVersion), (DWORD)LOWORD(dwMinorVersion)); | ||
100 | |||
101 | dwMaxMajorVersion = dwMajorVersion; | ||
102 | dwMaxMinorVersion = dwMinorVersion; | ||
103 | } | ||
104 | } | ||
105 | else | ||
106 | { | ||
107 | WcaLog(LOGMSG_VERBOSE, "Ignoring %ls because it doesn't contain the file ngen.exe", pwzTempVersion); | ||
108 | } | ||
109 | } | ||
110 | else | ||
111 | { | ||
112 | WcaLog(LOGMSG_VERBOSE, "Ignoring %ls because it is from .NET Framework v1.1, which is not backwards compatible with other versions of the Framework and thus is not supported by this custom action.", pwzTempVersion); | ||
113 | } | ||
114 | } | ||
115 | else | ||
116 | { | ||
117 | WcaLog(LOGMSG_VERBOSE, "Ignoring %ls because it isn't a directory", pwzTempVersion); | ||
118 | } | ||
119 | |||
120 | fFound = FindNextFileW(hFind, &wfdVersionDirectories); | ||
121 | |||
122 | if (!fFound) | ||
123 | { | ||
124 | dwError = ::GetLastError(); | ||
125 | hr = (ERROR_NO_MORE_FILES == dwError) ? ERROR_SUCCESS : HRESULT_FROM_WIN32(dwError); | ||
126 | ExitOnFailure(hr, "Failed to call FindNextFileW() with query %ls", pwzVersionSearch); | ||
127 | } | ||
128 | } | ||
129 | |||
130 | if (NULL == *ppwzVersion) | ||
131 | { | ||
132 | hr = HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); | ||
133 | ExitOnRootFailure(hr, "Searched through all subdirectories of %ls, but failed to find any version of ngen.exe", pwzParentPath); | ||
134 | } | ||
135 | else | ||
136 | { | ||
137 | WcaLog(LOGMSG_VERBOSE, "Using highest version of ngen found, located in this subdirectory: %ls, version %u.%u.%u.%u", *ppwzVersion, (DWORD)HIWORD(dwMajorVersion), (DWORD)LOWORD(dwMajorVersion), (DWORD)HIWORD(dwMinorVersion), (DWORD)LOWORD(dwMinorVersion)); | ||
138 | } | ||
139 | |||
140 | LExit: | ||
141 | if (hFind != INVALID_HANDLE_VALUE) | ||
142 | { | ||
143 | if (0 == FindClose(hFind)) | ||
144 | { | ||
145 | dwError = ::GetLastError(); | ||
146 | hr = HRESULT_FROM_WIN32(dwError); | ||
147 | WcaLog(LOGMSG_STANDARD, "Failed to close handle created by outer FindFirstFile with error %x - continuing", hr); | ||
148 | } | ||
149 | hFind = INVALID_HANDLE_VALUE; | ||
150 | } | ||
151 | |||
152 | ReleaseStr(pwzVersionSearch); | ||
153 | ReleaseStr(pwzNgen); | ||
154 | ReleaseStr(pwzTemp); | ||
155 | // Purposely don't release pwzTempVersion, because it wasn't allocated in this function, it's just a pointer to a string inside wfdVersionDirectories | ||
156 | |||
157 | return hr; | ||
158 | } | ||
159 | |||
160 | // Gets the path to ngen.exe | ||
161 | static HRESULT GetNgenPath( | ||
162 | __out LPWSTR* ppwzNgenPath, | ||
163 | __in BOOL f64BitFramework | ||
164 | ) | ||
165 | { | ||
166 | Assert(ppwzNgenPath); | ||
167 | HRESULT hr = S_OK; | ||
168 | |||
169 | LPWSTR pwzVersion = NULL; | ||
170 | LPWSTR pwzWindowsFolder = NULL; | ||
171 | |||
172 | hr = WcaGetProperty(L"WindowsFolder", &pwzWindowsFolder); | ||
173 | ExitOnFailure(hr, "failed to get WindowsFolder property"); | ||
174 | |||
175 | hr = StrAllocString(ppwzNgenPath, pwzWindowsFolder, 0); | ||
176 | ExitOnFailure(hr, "failed to copy to NgenPath windows folder: %ls", pwzWindowsFolder); | ||
177 | |||
178 | if (f64BitFramework) | ||
179 | { | ||
180 | WcaLog(LOGMSG_VERBOSE, "Searching for ngen under 64-bit framework path"); | ||
181 | |||
182 | hr = StrAllocConcat(ppwzNgenPath, L"Microsoft.NET\\Framework64\\", 0); | ||
183 | ExitOnFailure(hr, "failed to copy platform portion of ngen path"); | ||
184 | } | ||
185 | else | ||
186 | { | ||
187 | WcaLog(LOGMSG_VERBOSE, "Searching for ngen under 32-bit framework path"); | ||
188 | |||
189 | hr = StrAllocConcat(ppwzNgenPath, L"Microsoft.NET\\Framework\\", 0); | ||
190 | ExitOnFailure(hr, "failed to copy platform portion of ngen path"); | ||
191 | } | ||
192 | |||
193 | // We want to run the highest version of ngen possible, because they should be backwards compatible - so let's find the most appropriate directory now | ||
194 | hr = GetNgenVersion(*ppwzNgenPath, &pwzVersion); | ||
195 | ExitOnFailure(hr, "failed to search for ngen under path %ls", *ppwzNgenPath); | ||
196 | |||
197 | hr = StrAllocConcat(ppwzNgenPath, pwzVersion, 0); | ||
198 | ExitOnFailure(hr, "failed to copy version portion of ngen path"); | ||
199 | |||
200 | hr = StrAllocConcat(ppwzNgenPath, L"\\ngen.exe", 0); | ||
201 | ExitOnFailure(hr, "failed to copy \"\\ngen.exe\" portion of ngen path"); | ||
202 | |||
203 | LExit: | ||
204 | ReleaseStr(pwzVersion); | ||
205 | ReleaseStr(pwzWindowsFolder); | ||
206 | |||
207 | return hr; | ||
208 | } | ||
209 | |||
210 | |||
211 | static HRESULT GetStrongName( | ||
212 | __out LPWSTR* ppwzStrongName, | ||
213 | __in LPCWSTR pwzComponent | ||
214 | ) | ||
215 | { | ||
216 | Assert(ppwzStrongName); | ||
217 | HRESULT hr = S_OK; | ||
218 | |||
219 | PMSIHANDLE hView = NULL; | ||
220 | PMSIHANDLE hComponentRec = NULL; | ||
221 | PMSIHANDLE hRec = NULL; | ||
222 | |||
223 | LPWSTR pwzData = NULL; | ||
224 | LPWSTR pwzName = NULL; | ||
225 | LPWSTR pwzVersion = NULL; | ||
226 | LPWSTR pwzCulture = NULL; | ||
227 | LPWSTR pwzPublicKeyToken = NULL; | ||
228 | |||
229 | hComponentRec = ::MsiCreateRecord(1); | ||
230 | hr = WcaSetRecordString(hComponentRec, 1, pwzComponent); | ||
231 | ExitOnFailure(hr, "failed to set component value in record to: %ls", pwzComponent); | ||
232 | |||
233 | // get the name value records for this component | ||
234 | hr = WcaOpenView(vcsNgenStrongName, &hView); | ||
235 | ExitOnFailure(hr, "failed to open view on Wix4NetFxNativeImage table"); | ||
236 | |||
237 | hr = WcaExecuteView(hView, hComponentRec); | ||
238 | ExitOnFailure(hr, "failed to execute strong name view"); | ||
239 | |||
240 | while (S_OK == (hr = WcaFetchRecord(hView, &hRec))) | ||
241 | { | ||
242 | hr = WcaGetRecordString(hRec, ngsnName, &pwzData); | ||
243 | ExitOnFailure(hr, "failed to get MsiAssemblyName.Name for component: %ls", pwzComponent); | ||
244 | |||
245 | if (0 == lstrcmpW(L"name", pwzData)) | ||
246 | { | ||
247 | hr = WcaGetRecordString(hRec, ngsnValue, &pwzName); | ||
248 | ExitOnFailure(hr, "failed to get MsiAssemblyName.Value for component: %ls Name: %ls", pwzComponent, pwzData); | ||
249 | } | ||
250 | else if (0 == lstrcmpW(L"version", pwzData)) | ||
251 | { | ||
252 | hr = WcaGetRecordString(hRec, ngsnValue, &pwzVersion); | ||
253 | ExitOnFailure(hr, "failed to get MsiAssemblyName.Value for component: %ls Name: %ls", pwzComponent, pwzData); | ||
254 | } | ||
255 | else if (0 == lstrcmpW(L"culture", pwzData)) | ||
256 | { | ||
257 | hr = WcaGetRecordString(hRec, ngsnValue, &pwzCulture); | ||
258 | ExitOnFailure(hr, "failed to get MsiAssemblyName.Value for component: %ls Name: %ls", pwzComponent, pwzData); | ||
259 | } | ||
260 | else if (0 == lstrcmpW(L"publicKeyToken", pwzData)) | ||
261 | { | ||
262 | hr = WcaGetRecordString(hRec, ngsnValue, &pwzPublicKeyToken); | ||
263 | ExitOnFailure(hr, "failed to get MsiAssemblyName.Value for component: %ls Name: %ls", pwzComponent, pwzData); | ||
264 | } | ||
265 | } | ||
266 | if (E_NOMOREITEMS == hr) | ||
267 | hr = S_OK; | ||
268 | ExitOnFailure(hr, "failed while looping through all names and values in MsiAssemblyName table for component: %ls", pwzComponent); | ||
269 | |||
270 | hr = StrAllocFormatted(ppwzStrongName, L"\"%s, Version=%s, Culture=%s, PublicKeyToken=%s\"", pwzName, pwzVersion, pwzCulture, pwzPublicKeyToken); | ||
271 | ExitOnFailure(hr, "failed to format strong name for component: %ls", pwzComponent); | ||
272 | |||
273 | LExit: | ||
274 | ReleaseStr(pwzData); | ||
275 | ReleaseStr(pwzName); | ||
276 | ReleaseStr(pwzVersion); | ||
277 | ReleaseStr(pwzCulture); | ||
278 | ReleaseStr(pwzPublicKeyToken); | ||
279 | |||
280 | return hr; | ||
281 | } | ||
282 | |||
283 | static HRESULT CreateInstallCommand( | ||
284 | __out LPWSTR* ppwzCommandLine, | ||
285 | __in LPCWSTR pwzNgenPath, | ||
286 | __in LPCWSTR pwzFile, | ||
287 | __in int iPriority, | ||
288 | __in int iAttributes, | ||
289 | __in LPCWSTR pwzFileApp, | ||
290 | __in LPCWSTR pwzDirAppBase | ||
291 | ) | ||
292 | { | ||
293 | Assert(ppwzCommandLine && pwzNgenPath && *pwzNgenPath && pwzFile && *pwzFile&& pwzFileApp && pwzDirAppBase); | ||
294 | HRESULT hr = S_OK; | ||
295 | |||
296 | LPWSTR pwzQueueString = NULL; | ||
297 | |||
298 | hr = StrAllocFormatted(ppwzCommandLine, L"%s install %s", pwzNgenPath, pwzFile); | ||
299 | ExitOnFailure(hr, "failed to assemble install command line"); | ||
300 | |||
301 | if (iPriority > 0) | ||
302 | { | ||
303 | hr = StrAllocFormatted(&pwzQueueString, L" /queue:%d", iPriority); | ||
304 | ExitOnFailure(hr, "failed to format queue string"); | ||
305 | |||
306 | hr = StrAllocConcat(ppwzCommandLine, pwzQueueString, 0); | ||
307 | ExitOnFailure(hr, "failed to add queue string to NGEN command line"); | ||
308 | } | ||
309 | |||
310 | if (NGEN_DEBUG & iAttributes) | ||
311 | { | ||
312 | hr = StrAllocConcat(ppwzCommandLine, L" /Debug", 0); | ||
313 | ExitOnFailure(hr, "failed to add debug to NGEN command line"); | ||
314 | } | ||
315 | |||
316 | if (NGEN_PROFILE & iAttributes) | ||
317 | { | ||
318 | hr = StrAllocConcat(ppwzCommandLine, L" /Profile", 0); | ||
319 | ExitOnFailure(hr, "failed to add profile to NGEN command line"); | ||
320 | } | ||
321 | |||
322 | if (NGEN_NODEP & iAttributes) | ||
323 | { | ||
324 | hr = StrAllocConcat(ppwzCommandLine, L" /NoDependencies", 0); | ||
325 | ExitOnFailure(hr, "failed to add no dependencies to NGEN command line"); | ||
326 | } | ||
327 | |||
328 | // If it's more than just two quotes around an empty string | ||
329 | if (EMPTY_FORMATTED_LENGTH_QUOTED_FILE < lstrlenW(pwzFileApp)) | ||
330 | { | ||
331 | hr = StrAllocConcat(ppwzCommandLine, L" /ExeConfig:", 0); | ||
332 | ExitOnFailure(hr, "failed to add exe config to NGEN command line"); | ||
333 | |||
334 | hr = StrAllocConcat(ppwzCommandLine, pwzFileApp, 0); | ||
335 | ExitOnFailure(hr, "failed to add file app to NGEN command line"); | ||
336 | } | ||
337 | |||
338 | // If it's more than just two quotes around a backslash | ||
339 | if (EMPTY_FORMATTED_LENGTH_QUOTED_DIRECTORY < lstrlenW(pwzDirAppBase)) | ||
340 | { | ||
341 | hr = StrAllocConcat(ppwzCommandLine, L" /AppBase:", 0); | ||
342 | ExitOnFailure(hr, "failed to add app base to NGEN command line"); | ||
343 | |||
344 | hr = StrAllocConcat(ppwzCommandLine, pwzDirAppBase, 0); | ||
345 | ExitOnFailure(hr, "failed to add dir app base to NGEN command line"); | ||
346 | } | ||
347 | |||
348 | LExit: | ||
349 | return hr; | ||
350 | } | ||
351 | |||
352 | /****************************************************************** | ||
353 | FileIdExists - checks if the file ID is found in the File table | ||
354 | |||
355 | returns S_OK if the file exists; S_FALSE if not; otherwise, error | ||
356 | ********************************************************************/ | ||
357 | static HRESULT FileIdExists( | ||
358 | __in_opt LPCWSTR wzFile | ||
359 | ) | ||
360 | { | ||
361 | HRESULT hr = S_OK; | ||
362 | PMSIHANDLE hView = NULL; | ||
363 | PMSIHANDLE hRec = NULL; | ||
364 | |||
365 | if (!wzFile) | ||
366 | { | ||
367 | hr = S_FALSE; | ||
368 | ExitFunction(); | ||
369 | } | ||
370 | |||
371 | hRec = ::MsiCreateRecord(1); | ||
372 | hr = WcaSetRecordString(hRec, fiFile, wzFile); | ||
373 | ExitOnFailure(hr, "failed to create a record with the file: %ls", wzFile); | ||
374 | |||
375 | hr = WcaTableExists(L"File"); | ||
376 | if (S_OK == hr) | ||
377 | { | ||
378 | hr = WcaOpenView(vcsFileId, &hView); | ||
379 | ExitOnFailure(hr, "failed to open view on File table"); | ||
380 | |||
381 | hr = WcaExecuteView(hView, hRec); | ||
382 | ExitOnFailure(hr, "failed to execute view on File table"); | ||
383 | |||
384 | // Reuse the same record; the handle will be released. | ||
385 | hr = WcaFetchSingleRecord(hView, &hRec); | ||
386 | ExitOnFailure(hr, "failed to fetch File from File table"); | ||
387 | } | ||
388 | |||
389 | LExit: | ||
390 | |||
391 | return hr; | ||
392 | } | ||
393 | |||
394 | /****************************************************************** | ||
395 | SchedNetFx - entry point for NetFx Custom Action | ||
396 | |||
397 | ********************************************************************/ | ||
398 | extern "C" UINT __stdcall SchedNetFx( | ||
399 | __in MSIHANDLE hInstall | ||
400 | ) | ||
401 | { | ||
402 | // AssertSz(FALSE, "debug SchedNetFx"); | ||
403 | |||
404 | HRESULT hr = S_OK; | ||
405 | UINT er = ERROR_SUCCESS; | ||
406 | |||
407 | LPWSTR pwzInstallCustomActionData = NULL; | ||
408 | LPWSTR pwzUninstallCustomActionData = NULL; | ||
409 | UINT uiCost = 0; | ||
410 | |||
411 | PMSIHANDLE hView = NULL; | ||
412 | PMSIHANDLE hRec = NULL; | ||
413 | PMSIHANDLE hViewGac = NULL; | ||
414 | PMSIHANDLE hRecGac = NULL; | ||
415 | |||
416 | LPWSTR pwzId = NULL; | ||
417 | LPWSTR pwzData = NULL; | ||
418 | LPWSTR pwzTemp = NULL; | ||
419 | LPWSTR pwzFile = NULL; | ||
420 | int iPriority = 0; | ||
421 | int iAssemblyCost = 0; | ||
422 | int iAttributes = 0; | ||
423 | LPWSTR pwzFileApp = NULL; | ||
424 | LPWSTR pwzDirAppBase = NULL; | ||
425 | LPWSTR pwzComponent = NULL; | ||
426 | |||
427 | INSTALLSTATE isInstalled; | ||
428 | INSTALLSTATE isAction; | ||
429 | |||
430 | LPWSTR pwz32Ngen = NULL; | ||
431 | LPWSTR pwz64Ngen = NULL; | ||
432 | |||
433 | BOOL f32NgenExeExists = FALSE; | ||
434 | BOOL f64NgenExeExists = FALSE; | ||
435 | |||
436 | BOOL fNeedInstallUpdate32 = FALSE; | ||
437 | BOOL fNeedUninstallUpdate32 = FALSE; | ||
438 | BOOL fNeedInstallUpdate64 = FALSE; | ||
439 | BOOL fNeedUninstallUpdate64 = FALSE; | ||
440 | |||
441 | // initialize | ||
442 | hr = WcaInitialize(hInstall, "SchedNetFx"); | ||
443 | ExitOnFailure(hr, "failed to initialize"); | ||
444 | |||
445 | hr = GetNgenPath(&pwz32Ngen, FALSE); | ||
446 | f32NgenExeExists = SUCCEEDED(hr); | ||
447 | if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == hr || HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr) | ||
448 | { | ||
449 | hr = ERROR_SUCCESS; | ||
450 | WcaLog(LOGMSG_STANDARD, "Failed to find 32bit ngen. No actions will be scheduled to create native images for 32bit."); | ||
451 | } | ||
452 | ExitOnFailure(hr, "failed to get 32bit ngen.exe path"); | ||
453 | |||
454 | hr = GetNgenPath(&pwz64Ngen, TRUE); | ||
455 | f64NgenExeExists = SUCCEEDED(hr); | ||
456 | if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == hr || HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr) | ||
457 | { | ||
458 | hr = ERROR_SUCCESS; | ||
459 | WcaLog(LOGMSG_STANDARD, "Failed to find 64bit ngen. No actions will be scheduled to create native images for 64bit."); | ||
460 | } | ||
461 | ExitOnFailure(hr, "failed to get 64bit ngen.exe path"); | ||
462 | |||
463 | // loop through all the NetFx records | ||
464 | hr = WcaOpenExecuteView(vcsNgenQuery, &hView); | ||
465 | ExitOnFailure(hr, "failed to open view on Wix4NetFxNativeImage table"); | ||
466 | |||
467 | while (S_OK == (hr = WcaFetchRecord(hView, &hRec))) | ||
468 | { | ||
469 | // Get Id | ||
470 | hr = WcaGetRecordString(hRec, ngqId, &pwzId); | ||
471 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.Wix4NetFxNativeImage"); | ||
472 | |||
473 | // Get File | ||
474 | hr = WcaGetRecordString(hRec, ngqFile, &pwzData); | ||
475 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.File_ for record: %ls", pwzId); | ||
476 | hr = StrAllocFormatted(&pwzTemp, vpwzUnformattedQuotedFile, pwzData); | ||
477 | ExitOnFailure(hr, "failed to format file string for file: %ls", pwzData); | ||
478 | hr = WcaGetFormattedString(pwzTemp, &pwzFile); | ||
479 | ExitOnFailure(hr, "failed to get formatted string for file: %ls", pwzData); | ||
480 | |||
481 | // Get Priority | ||
482 | hr = WcaGetRecordInteger(hRec, ngqPriority, &iPriority); | ||
483 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.Priority for record: %ls", pwzId); | ||
484 | |||
485 | if (0 == iPriority) | ||
486 | iAssemblyCost = COST_NGEN_BLOCKING; | ||
487 | else | ||
488 | iAssemblyCost = COST_NGEN_NONBLOCKING; | ||
489 | |||
490 | // Get Attributes | ||
491 | hr = WcaGetRecordInteger(hRec, ngqAttributes, &iAttributes); | ||
492 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.Attributes for record: %ls", pwzId); | ||
493 | |||
494 | // Get File_Application or leave pwzFileApp NULL. | ||
495 | hr = WcaGetRecordFormattedString(hRec, ngqFileApp, &pwzData); | ||
496 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.File_Application for record: %ls", pwzId); | ||
497 | |||
498 | // Check if the value resolves to a valid file ID. | ||
499 | if (S_OK == FileIdExists(pwzData)) | ||
500 | { | ||
501 | // Resolve the file ID to a path. | ||
502 | hr = StrAllocFormatted(&pwzTemp, vpwzUnformattedQuotedFile, pwzData); | ||
503 | ExitOnFailure(hr, "failed to format file application string for file: %ls", pwzData); | ||
504 | |||
505 | hr = WcaGetFormattedString(pwzTemp, &pwzFileApp); | ||
506 | ExitOnFailure(hr, "failed to get formatted string for file application: %ls", pwzData); | ||
507 | } | ||
508 | else | ||
509 | { | ||
510 | // Assume record formatted to a path already. | ||
511 | hr = StrAllocString(&pwzFileApp, pwzData, 0); | ||
512 | ExitOnFailure(hr, "failed to allocate string for file path: %ls", pwzData); | ||
513 | |||
514 | hr = PathEnsureQuoted(&pwzFileApp, FALSE); | ||
515 | ExitOnFailure(hr, "failed to quote file path: %ls", pwzData); | ||
516 | } | ||
517 | |||
518 | // Get Directory_ApplicationBase or leave pwzDirAppBase NULL. | ||
519 | hr = WcaGetRecordFormattedString(hRec, ngqDirAppBase, &pwzData); | ||
520 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.Directory_ApplicationBase for record: %ls", pwzId); | ||
521 | |||
522 | if (WcaIsUnicodePropertySet(pwzData)) | ||
523 | { | ||
524 | // Resolve the directory ID to a path. | ||
525 | hr = StrAllocFormatted(&pwzTemp, vpwzUnformattedQuotedDirectory, pwzData); | ||
526 | ExitOnFailure(hr, "failed to format directory application base string for property: %ls", pwzData); | ||
527 | |||
528 | hr = WcaGetFormattedString(pwzTemp, &pwzDirAppBase); | ||
529 | ExitOnFailure(hr, "failed to get formatted string for directory application base: %ls", pwzData); | ||
530 | } | ||
531 | else | ||
532 | { | ||
533 | // Assume record formatted to a path already. | ||
534 | hr = StrAllocString(&pwzDirAppBase, pwzData, 0); | ||
535 | ExitOnFailure(hr, "failed to allocate string for directory path: %ls", pwzData); | ||
536 | |||
537 | hr = PathEnsureQuoted(&pwzDirAppBase, TRUE); | ||
538 | ExitOnFailure(hr, "failed to quote and backslashify directory: %ls", pwzData); | ||
539 | } | ||
540 | |||
541 | // Get Component | ||
542 | hr = WcaGetRecordString(hRec, ngqComponent, &pwzComponent); | ||
543 | ExitOnFailure(hr, "failed to get Wix4NetFxNativeImage.Directory_ApplicationBase for record: %ls", pwzId); | ||
544 | er = ::MsiGetComponentStateW(hInstall, pwzComponent, &isInstalled, &isAction); | ||
545 | ExitOnWin32Error(er, hr, "failed to get install state for Component: %ls", pwzComponent); | ||
546 | |||
547 | // | ||
548 | // Figure out if it's going to be GAC'd. The possibility exists that no assemblies are going to be GAC'd | ||
549 | // so we have to check for the MsiAssembly table first. | ||
550 | // | ||
551 | if (S_OK == WcaTableExists(L"MsiAssembly")) | ||
552 | { | ||
553 | hr = WcaOpenView(vcsNgenGac, &hViewGac); | ||
554 | ExitOnFailure(hr, "failed to open view on File/MsiAssembly table"); | ||
555 | |||
556 | hr = WcaExecuteView(hViewGac, hRec); | ||
557 | ExitOnFailure(hr, "failed to execute view on File/MsiAssembly table"); | ||
558 | |||
559 | hr = WcaFetchSingleRecord(hViewGac, &hRecGac); | ||
560 | ExitOnFailure(hr, "failed to fetch File_Assembly from File/MsiAssembly table"); | ||
561 | |||
562 | if (S_FALSE != hr) | ||
563 | { | ||
564 | hr = WcaGetRecordString(hRecGac, nggApplication, &pwzData); | ||
565 | ExitOnFailure(hr, "failed to get MsiAssembly.File_Application"); | ||
566 | |||
567 | // If it's in the GAC replace the file name with the strong name | ||
568 | if (L'\0' == pwzData[0]) | ||
569 | { | ||
570 | hr = GetStrongName(&pwzFile, pwzComponent); | ||
571 | ExitOnFailure(hr, "failed to get strong name for component: %ls", pwzData); | ||
572 | } | ||
573 | } | ||
574 | } | ||
575 | |||
576 | // | ||
577 | // Schedule the work | ||
578 | // | ||
579 | if (!(iAttributes & NGEN_32BIT) && !(iAttributes & NGEN_64BIT)) | ||
580 | ExitOnFailure(hr = E_INVALIDARG, "Neither 32bit nor 64bit is specified for NGEN of file: %ls", pwzFile); | ||
581 | |||
582 | if (WcaIsInstalling(isInstalled, isAction) || WcaIsReInstalling(isInstalled, isAction)) | ||
583 | { | ||
584 | if (iAttributes & NGEN_32BIT && f32NgenExeExists) | ||
585 | { | ||
586 | // Assemble the install command line | ||
587 | hr = CreateInstallCommand(&pwzData, pwz32Ngen, pwzFile, iPriority, iAttributes, pwzFileApp, pwzDirAppBase); | ||
588 | ExitOnFailure(hr, "failed to create install command line"); | ||
589 | |||
590 | hr = WcaWriteStringToCaData(pwzData, &pwzInstallCustomActionData); | ||
591 | ExitOnFailure(hr, "failed to add install command to custom action data: %ls", pwzData); | ||
592 | |||
593 | hr = WcaWriteIntegerToCaData(iAssemblyCost, &pwzInstallCustomActionData); | ||
594 | ExitOnFailure(hr, "failed to add cost to custom action data: %ls", pwzData); | ||
595 | |||
596 | uiCost += iAssemblyCost; | ||
597 | |||
598 | fNeedInstallUpdate32 = TRUE; | ||
599 | } | ||
600 | |||
601 | if (iAttributes & NGEN_64BIT && f64NgenExeExists) | ||
602 | { | ||
603 | // Assemble the install command line | ||
604 | hr = CreateInstallCommand(&pwzData, pwz64Ngen, pwzFile, iPriority, iAttributes, pwzFileApp, pwzDirAppBase); | ||
605 | ExitOnFailure(hr, "failed to create install command line"); | ||
606 | |||
607 | hr = WcaWriteStringToCaData(pwzData, &pwzInstallCustomActionData); // command | ||
608 | ExitOnFailure(hr, "failed to add install command to custom action data: %ls", pwzData); | ||
609 | |||
610 | hr = WcaWriteIntegerToCaData(iAssemblyCost, &pwzInstallCustomActionData); // cost | ||
611 | ExitOnFailure(hr, "failed to add cost to custom action data: %ls", pwzData); | ||
612 | |||
613 | uiCost += iAssemblyCost; | ||
614 | |||
615 | fNeedInstallUpdate64 = TRUE; | ||
616 | } | ||
617 | } | ||
618 | else if (WcaIsUninstalling(isInstalled, isAction)) | ||
619 | { | ||
620 | if (iAttributes & NGEN_32BIT && f32NgenExeExists) | ||
621 | { | ||
622 | hr = StrAllocFormatted(&pwzData, L"%s uninstall %s", pwz32Ngen, pwzFile); | ||
623 | ExitOnFailure(hr, "failed to create update 32 command line"); | ||
624 | |||
625 | hr = WcaWriteStringToCaData(pwzData, &pwzUninstallCustomActionData); // command | ||
626 | ExitOnFailure(hr, "failed to add install command to custom action data: %ls", pwzData); | ||
627 | |||
628 | hr = WcaWriteIntegerToCaData(COST_NGEN_NONBLOCKING, &pwzUninstallCustomActionData); // cost | ||
629 | ExitOnFailure(hr, "failed to add cost to custom action data: %ls", pwzData); | ||
630 | |||
631 | uiCost += COST_NGEN_NONBLOCKING; | ||
632 | |||
633 | fNeedUninstallUpdate32 = TRUE; | ||
634 | } | ||
635 | |||
636 | if (iAttributes & NGEN_64BIT && f64NgenExeExists) | ||
637 | { | ||
638 | hr = StrAllocFormatted(&pwzData, L"%s uninstall %s", pwz64Ngen, pwzFile); | ||
639 | ExitOnFailure(hr, "failed to create update 64 command line"); | ||
640 | |||
641 | hr = WcaWriteStringToCaData(pwzData, &pwzUninstallCustomActionData); // command | ||
642 | ExitOnFailure(hr, "failed to add install command to custom action data: %ls", pwzData); | ||
643 | |||
644 | hr = WcaWriteIntegerToCaData(COST_NGEN_NONBLOCKING, &pwzUninstallCustomActionData); // cost | ||
645 | ExitOnFailure(hr, "failed to add cost to custom action data: %ls", pwzData); | ||
646 | |||
647 | uiCost += COST_NGEN_NONBLOCKING; | ||
648 | |||
649 | fNeedUninstallUpdate64 = TRUE; | ||
650 | } | ||
651 | } | ||
652 | } | ||
653 | if (E_NOMOREITEMS == hr) | ||
654 | hr = S_OK; | ||
655 | ExitOnFailure(hr, "failed while looping through all files to create native images for"); | ||
656 | |||
657 | // If we need 32 bit install update | ||
658 | if (fNeedInstallUpdate32) | ||
659 | { | ||
660 | hr = StrAllocFormatted(&pwzData, L"%s update /queue", pwz32Ngen); | ||
661 | ExitOnFailure(hr, "failed to create install update 32 command line"); | ||
662 | |||
663 | hr = WcaWriteStringToCaData(pwzData, &pwzInstallCustomActionData); // command | ||
664 | ExitOnFailure(hr, "failed to add install command to install custom action data: %ls", pwzData); | ||
665 | |||
666 | hr = WcaWriteIntegerToCaData(COST_NGEN_NONBLOCKING, &pwzInstallCustomActionData); // cost | ||
667 | ExitOnFailure(hr, "failed to add cost to install custom action data: %ls", pwzData); | ||
668 | |||
669 | uiCost += COST_NGEN_NONBLOCKING; | ||
670 | } | ||
671 | |||
672 | // If we need 32 bit uninstall update | ||
673 | if (fNeedUninstallUpdate32) | ||
674 | { | ||
675 | hr = StrAllocFormatted(&pwzData, L"%s update /queue", pwz32Ngen); | ||
676 | ExitOnFailure(hr, "failed to create uninstall update 32 command line"); | ||
677 | |||
678 | hr = WcaWriteStringToCaData(pwzData, &pwzUninstallCustomActionData); // command | ||
679 | ExitOnFailure(hr, "failed to add install command to uninstall custom action data: %ls", pwzData); | ||
680 | |||
681 | hr = WcaWriteIntegerToCaData(COST_NGEN_NONBLOCKING, &pwzUninstallCustomActionData); // cost | ||
682 | ExitOnFailure(hr, "failed to add cost to uninstall custom action data: %ls", pwzData); | ||
683 | |||
684 | uiCost += COST_NGEN_NONBLOCKING; | ||
685 | } | ||
686 | |||
687 | // If we need 64 bit install update | ||
688 | if (fNeedInstallUpdate64) | ||
689 | { | ||
690 | hr = StrAllocFormatted(&pwzData, L"%s update /queue", pwz64Ngen); | ||
691 | ExitOnFailure(hr, "failed to create install update 64 command line"); | ||
692 | |||
693 | hr = WcaWriteStringToCaData(pwzData, &pwzInstallCustomActionData); // command | ||
694 | ExitOnFailure(hr, "failed to add install command to install custom action data: %ls", pwzData); | ||
695 | |||
696 | hr = WcaWriteIntegerToCaData(COST_NGEN_NONBLOCKING, &pwzInstallCustomActionData); // cost | ||
697 | ExitOnFailure(hr, "failed to add cost to install custom action data: %ls", pwzData); | ||
698 | |||
699 | uiCost += COST_NGEN_NONBLOCKING; | ||
700 | } | ||
701 | |||
702 | // If we need 64 bit install update | ||
703 | if (fNeedUninstallUpdate64) | ||
704 | { | ||
705 | hr = StrAllocFormatted(&pwzData, L"%s update /queue", pwz64Ngen); | ||
706 | ExitOnFailure(hr, "failed to create uninstall update 64 command line"); | ||
707 | |||
708 | hr = WcaWriteStringToCaData(pwzData, &pwzUninstallCustomActionData); // command | ||
709 | ExitOnFailure(hr, "failed to add install command to uninstall custom action data: %ls", pwzData); | ||
710 | |||
711 | hr = WcaWriteIntegerToCaData(COST_NGEN_NONBLOCKING, &pwzUninstallCustomActionData); // cost | ||
712 | ExitOnFailure(hr, "failed to add cost to uninstall custom action data: %ls", pwzData); | ||
713 | |||
714 | uiCost += COST_NGEN_NONBLOCKING; | ||
715 | } | ||
716 | |||
717 | // Add to progress bar | ||
718 | if ((pwzInstallCustomActionData && *pwzInstallCustomActionData) || (pwzUninstallCustomActionData && *pwzUninstallCustomActionData)) | ||
719 | { | ||
720 | hr = WcaProgressMessage(uiCost, TRUE); | ||
721 | ExitOnFailure(hr, "failed to extend progress bar for NetFxExecuteNativeImage"); | ||
722 | } | ||
723 | |||
724 | // Schedule the install custom action | ||
725 | if (pwzInstallCustomActionData && *pwzInstallCustomActionData) | ||
726 | { | ||
727 | hr = WcaSetProperty(L"NetFxExecuteNativeImageInstall", pwzInstallCustomActionData); | ||
728 | ExitOnFailure(hr, "failed to schedule NetFxExecuteNativeImageInstall action"); | ||
729 | |||
730 | hr = WcaSetProperty(L"NetFxExecuteNativeImageCommitInstall", pwzInstallCustomActionData); | ||
731 | ExitOnFailure(hr, "failed to schedule NetFxExecuteNativeImageCommitInstall action"); | ||
732 | } | ||
733 | |||
734 | // Schedule the uninstall custom action | ||
735 | if (pwzUninstallCustomActionData && *pwzUninstallCustomActionData) | ||
736 | { | ||
737 | hr = WcaSetProperty(L"NetFxExecuteNativeImageUninstall", pwzUninstallCustomActionData); | ||
738 | ExitOnFailure(hr, "failed to schedule NetFxExecuteNativeImageUninstall action"); | ||
739 | |||
740 | hr = WcaSetProperty(L"NetFxExecuteNativeImageCommitUninstall", pwzUninstallCustomActionData); | ||
741 | ExitOnFailure(hr, "failed to schedule NetFxExecuteNativeImageCommitUninstall action"); | ||
742 | } | ||
743 | |||
744 | |||
745 | LExit: | ||
746 | ReleaseStr(pwzInstallCustomActionData); | ||
747 | ReleaseStr(pwzUninstallCustomActionData); | ||
748 | ReleaseStr(pwzId); | ||
749 | ReleaseStr(pwzData); | ||
750 | ReleaseStr(pwzTemp); | ||
751 | ReleaseStr(pwzFile); | ||
752 | ReleaseStr(pwzFileApp); | ||
753 | ReleaseStr(pwzDirAppBase); | ||
754 | ReleaseStr(pwzComponent); | ||
755 | ReleaseStr(pwz32Ngen); | ||
756 | ReleaseStr(pwz64Ngen); | ||
757 | |||
758 | if (FAILED(hr)) | ||
759 | er = ERROR_INSTALL_FAILURE; | ||
760 | return WcaFinalize(er); | ||
761 | } | ||
762 | |||
763 | |||
764 | /****************************************************************** | ||
765 | ExecNetFx - entry point for NetFx Custom Action | ||
766 | |||
767 | *******************************************************************/ | ||
768 | extern "C" UINT __stdcall ExecNetFx( | ||
769 | __in MSIHANDLE hInstall | ||
770 | ) | ||
771 | { | ||
772 | // AssertSz(FALSE, "debug ExecNetFx"); | ||
773 | |||
774 | HRESULT hr = S_OK; | ||
775 | UINT er = ERROR_SUCCESS; | ||
776 | |||
777 | LPWSTR pwzCustomActionData = NULL; | ||
778 | LPWSTR pwzData = NULL; | ||
779 | LPWSTR pwz = NULL; | ||
780 | int iCost = 0; | ||
781 | |||
782 | // initialize | ||
783 | hr = WcaInitialize(hInstall, "ExecNetFx"); | ||
784 | ExitOnFailure(hr, "failed to initialize"); | ||
785 | |||
786 | hr = WcaGetProperty( L"CustomActionData", &pwzCustomActionData); | ||
787 | ExitOnFailure(hr, "failed to get CustomActionData"); | ||
788 | |||
789 | WcaLog(LOGMSG_TRACEONLY, "CustomActionData: %ls", pwzCustomActionData); | ||
790 | |||
791 | pwz = pwzCustomActionData; | ||
792 | |||
793 | // loop through all the passed in data | ||
794 | while (pwz && *pwz) | ||
795 | { | ||
796 | hr = WcaReadStringFromCaData(&pwz, &pwzData); | ||
797 | ExitOnFailure(hr, "failed to read command line from custom action data"); | ||
798 | |||
799 | hr = WcaReadIntegerFromCaData(&pwz, &iCost); | ||
800 | ExitOnFailure(hr, "failed to read cost from custom action data"); | ||
801 | |||
802 | hr = QuietExec(pwzData, NGEN_TIMEOUT, TRUE, TRUE); | ||
803 | // If we fail here it isn't critical - keep looping through to try to act on the other assemblies on our list | ||
804 | if (FAILED(hr)) | ||
805 | { | ||
806 | WcaLog(LOGMSG_STANDARD, "failed to execute Ngen command (with error 0x%x): %ls, continuing anyway", hr, pwzData); | ||
807 | hr = S_OK; | ||
808 | } | ||
809 | |||
810 | // Tick the progress bar along for this assembly | ||
811 | hr = WcaProgressMessage(iCost, FALSE); | ||
812 | ExitOnFailure(hr, "failed to tick progress bar for command line: %ls", pwzData); | ||
813 | } | ||
814 | |||
815 | LExit: | ||
816 | ReleaseStr(pwzCustomActionData); | ||
817 | ReleaseStr(pwzData); | ||
818 | |||
819 | if (FAILED(hr)) | ||
820 | er = ERROR_INSTALL_FAILURE; | ||
821 | return WcaFinalize(er); | ||
822 | } | ||
823 | |||
diff --git a/src/ext/NetFx/ca/netfxca.def b/src/ext/NetFx/ca/netfxca.def new file mode 100644 index 00000000..c1d01f5f --- /dev/null +++ b/src/ext/NetFx/ca/netfxca.def | |||
@@ -0,0 +1,8 @@ | |||
1 | ; Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | |||
4 | LIBRARY "netfxca" | ||
5 | |||
6 | EXPORTS | ||
7 | SchedNetFx | ||
8 | ExecNetFx | ||
diff --git a/src/ext/NetFx/ca/netfxca.vcxproj b/src/ext/NetFx/ca/netfxca.vcxproj new file mode 100644 index 00000000..5e25b683 --- /dev/null +++ b/src/ext/NetFx/ca/netfxca.vcxproj | |||
@@ -0,0 +1,73 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
5 | <ItemGroup Label="ProjectConfigurations"> | ||
6 | <ProjectConfiguration Include="Debug|Win32"> | ||
7 | <Configuration>Debug</Configuration> | ||
8 | <Platform>Win32</Platform> | ||
9 | </ProjectConfiguration> | ||
10 | <ProjectConfiguration Include="Release|Win32"> | ||
11 | <Configuration>Release</Configuration> | ||
12 | <Platform>Win32</Platform> | ||
13 | </ProjectConfiguration> | ||
14 | <ProjectConfiguration Include="Debug|x64"> | ||
15 | <Configuration>Debug</Configuration> | ||
16 | <Platform>x64</Platform> | ||
17 | </ProjectConfiguration> | ||
18 | <ProjectConfiguration Include="Release|x64"> | ||
19 | <Configuration>Release</Configuration> | ||
20 | <Platform>x64</Platform> | ||
21 | </ProjectConfiguration> | ||
22 | <ProjectConfiguration Include="Debug|ARM64"> | ||
23 | <Configuration>Debug</Configuration> | ||
24 | <Platform>ARM64</Platform> | ||
25 | </ProjectConfiguration> | ||
26 | <ProjectConfiguration Include="Release|ARM64"> | ||
27 | <Configuration>Release</Configuration> | ||
28 | <Platform>ARM64</Platform> | ||
29 | </ProjectConfiguration> | ||
30 | </ItemGroup> | ||
31 | |||
32 | <PropertyGroup Label="Globals"> | ||
33 | <ProjectGuid>{F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}</ProjectGuid> | ||
34 | <ConfigurationType>DynamicLibrary</ConfigurationType> | ||
35 | <TargetName>netfxca</TargetName> | ||
36 | <PlatformToolset>v142</PlatformToolset> | ||
37 | <CharacterSet>Unicode</CharacterSet> | ||
38 | <ProjectModuleDefinitionFile>netfxca.def</ProjectModuleDefinitionFile> | ||
39 | <Description>WiX Toolset .NET Framework CustomAction</Description> | ||
40 | </PropertyGroup> | ||
41 | |||
42 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||
43 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||
44 | |||
45 | <PropertyGroup> | ||
46 | <ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries> | ||
47 | </PropertyGroup> | ||
48 | |||
49 | <ItemGroup> | ||
50 | <ClCompile Include="dllmain.cpp"> | ||
51 | <PrecompiledHeader>Create</PrecompiledHeader> | ||
52 | </ClCompile> | ||
53 | <ClCompile Include="netfxca.cpp" /> | ||
54 | </ItemGroup> | ||
55 | |||
56 | <ItemGroup> | ||
57 | <ClInclude Include="cost.h" /> | ||
58 | <ClInclude Include="precomp.h" /> | ||
59 | </ItemGroup> | ||
60 | |||
61 | <ItemGroup> | ||
62 | <None Include="netfxca.def" /> | ||
63 | </ItemGroup> | ||
64 | |||
65 | <ItemGroup> | ||
66 | <PackageReference Include="WixToolset.Dutil" Version="4.0.72" /> | ||
67 | <PackageReference Include="WixToolset.WcaUtil" Version="4.0.19" /> | ||
68 | <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" /> | ||
69 | <PackageReference Include="Nerdbank.GitVersioning" Version="3.3.37" /> | ||
70 | </ItemGroup> | ||
71 | |||
72 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||
73 | </Project> | ||
diff --git a/src/ext/NetFx/ca/precomp.h b/src/ext/NetFx/ca/precomp.h new file mode 100644 index 00000000..4a83c164 --- /dev/null +++ b/src/ext/NetFx/ca/precomp.h | |||
@@ -0,0 +1,14 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | #include <windows.h> | ||
6 | #include <msiquery.h> | ||
7 | |||
8 | #include "wcautil.h" | ||
9 | #include "fileutil.h" | ||
10 | #include "strutil.h" | ||
11 | #include "pathutil.h" | ||
12 | |||
13 | #include "caDecor.h" | ||
14 | #include "cost.h" | ||
diff --git a/src/ext/NetFx/nuget.config b/src/ext/NetFx/nuget.config new file mode 100644 index 00000000..7f258709 --- /dev/null +++ b/src/ext/NetFx/nuget.config | |||
@@ -0,0 +1,19 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <configuration> | ||
3 | <packageSources> | ||
4 | <clear /> | ||
5 | <add key="wixtoolset-data" value="https://ci.appveyor.com/nuget/wixtoolset-data" /> | ||
6 | <add key="wixtoolset-extensibility" value="https://ci.appveyor.com/nuget/wixtoolset-extensibility" /> | ||
7 | <add key="wixtoolset-core" value="https://ci.appveyor.com/nuget/wixtoolset-core" /> | ||
8 | <add key="wixtoolset-core-native" value="https://ci.appveyor.com/nuget/wixtoolset-core-native" /> | ||
9 | <add key="wixtoolset-dtf" value="https://ci.appveyor.com/nuget/wixtoolset-dtf" /> | ||
10 | <add key="wixtoolset-dutil" value="https://ci.appveyor.com/nuget/wixtoolset-dutil" /> | ||
11 | <add key="wixtoolset-wcautil" value="https://ci.appveyor.com/nuget/wixtoolset-wcautil" /> | ||
12 | <add key="wixtoolset-tools" value="https://ci.appveyor.com/nuget/wixtoolset-tools" /> | ||
13 | <add key="wixtoolset-bal-wixext" value="https://ci.appveyor.com/nuget/wixtoolset-bal-wixext" /> | ||
14 | <add key="wixtoolset-util-wixext" value="https://ci.appveyor.com/nuget/wixtoolset-util-wixext" /> | ||
15 | <add key="wixburn" value="https://ci.appveyor.com/nuget/wixtoolset-burn" /> | ||
16 | <add key="wixbuildtools" value="https://ci.appveyor.com/nuget/wixbuildtools" /> | ||
17 | <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||
18 | </packageSources> | ||
19 | </configuration> \ No newline at end of file | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs b/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs new file mode 100644 index 00000000..72d4a682 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs | |||
@@ -0,0 +1,147 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolsetTest.Netfx | ||
4 | { | ||
5 | using System.IO; | ||
6 | using System.Linq; | ||
7 | using WixBuildTools.TestSupport; | ||
8 | using WixToolset.Core.TestPackage; | ||
9 | using WixToolset.Netfx; | ||
10 | using Xunit; | ||
11 | |||
12 | public class NetfxExtensionFixture | ||
13 | { | ||
14 | [Fact] | ||
15 | public void CanBuildUsingLatestDotNetCorePackages() | ||
16 | { | ||
17 | using (var fs = new DisposableFileSystem()) | ||
18 | { | ||
19 | var baseFolder = fs.GetFolder(); | ||
20 | var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); | ||
21 | var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages"); | ||
22 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
23 | |||
24 | var compileResult = WixRunner.Execute(new[] | ||
25 | { | ||
26 | "build", | ||
27 | Path.Combine(bundleSourceFolder, "BundleLatest.wxs"), | ||
28 | "-ext", TestData.Get(@"WixToolset.Bal.wixext.dll"), | ||
29 | "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"), | ||
30 | "-intermediateFolder", intermediateFolder, | ||
31 | "-o", bundleFile, | ||
32 | }); | ||
33 | compileResult.AssertSuccess(); | ||
34 | |||
35 | Assert.True(File.Exists(bundleFile)); | ||
36 | } | ||
37 | } | ||
38 | |||
39 | [Fact] | ||
40 | public void CanBuildUsingLatestDotNetCorePackages_X64() | ||
41 | { | ||
42 | using (var fs = new DisposableFileSystem()) | ||
43 | { | ||
44 | var baseFolder = fs.GetFolder(); | ||
45 | var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); | ||
46 | var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages"); | ||
47 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
48 | |||
49 | var compileResult = WixRunner.Execute(new[] | ||
50 | { | ||
51 | "build", | ||
52 | Path.Combine(bundleSourceFolder, "BundleLatest_x64.wxs"), | ||
53 | "-ext", TestData.Get(@"WixToolset.Bal.wixext.dll"), | ||
54 | "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"), | ||
55 | "-intermediateFolder", intermediateFolder, | ||
56 | "-o", bundleFile, | ||
57 | }); | ||
58 | compileResult.AssertSuccess(); | ||
59 | |||
60 | Assert.True(File.Exists(bundleFile)); | ||
61 | } | ||
62 | } | ||
63 | |||
64 | [Fact] | ||
65 | public void CanBuildUsingNativeImage() | ||
66 | { | ||
67 | var folder = TestData.Get(@"TestData\UsingNativeImage"); | ||
68 | var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder }); | ||
69 | |||
70 | var results = build.BuildAndQuery(Build, "Binary", "CustomAction", "Wix4NetFxNativeImage"); | ||
71 | Assert.Equal(new[] | ||
72 | { | ||
73 | "Binary:Wix4NetFxCA_X86\t[Binary data]", | ||
74 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t", | ||
75 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t", | ||
76 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_X86\t3137\tWix4NetFxCA_X86\tExecNetFx\t", | ||
77 | "CustomAction:Wix4NetFxExecuteNativeImageUninstall_X86\t3137\tWix4NetFxCA_X86\tExecNetFx\t", | ||
78 | "CustomAction:Wix4NetFxScheduleNativeImage_X86\t1\tWix4NetFxCA_X86\tSchedNetFx\t", | ||
79 | "Wix4NetFxNativeImage:ExampleNgen\tfil6349_KNDJhqShNzVdHX3ihhvA6Y\t3\t8\t\t", | ||
80 | }, results.OrderBy(s => s).ToArray()); | ||
81 | } | ||
82 | |||
83 | [Fact] | ||
84 | public void CanBuildUsingNativeImageX64() | ||
85 | { | ||
86 | var folder = TestData.Get(@"TestData\UsingNativeImage"); | ||
87 | var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder }); | ||
88 | |||
89 | var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4NetFxNativeImage"); | ||
90 | Assert.Equal(new[] | ||
91 | { | ||
92 | "Binary:Wix4NetFxCA_X64\t[Binary data]", | ||
93 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t", | ||
94 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t", | ||
95 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_X64\t3137\tWix4NetFxCA_X64\tExecNetFx\t", | ||
96 | "CustomAction:Wix4NetFxExecuteNativeImageUninstall_X64\t3137\tWix4NetFxCA_X64\tExecNetFx\t", | ||
97 | "CustomAction:Wix4NetFxScheduleNativeImage_X64\t1\tWix4NetFxCA_X64\tSchedNetFx\t", | ||
98 | "Wix4NetFxNativeImage:ExampleNgen\tfil6349_KNDJhqShNzVdHX3ihhvA6Y\t3\t8\t\t", | ||
99 | }, results.OrderBy(s => s).ToArray()); | ||
100 | } | ||
101 | |||
102 | [Fact] | ||
103 | public void CanBuildUsingNativeImageARM64() | ||
104 | { | ||
105 | var folder = TestData.Get(@"TestData\UsingNativeImage"); | ||
106 | var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder }); | ||
107 | |||
108 | var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction", "Wix4NetFxNativeImage"); | ||
109 | Assert.Equal(new[] | ||
110 | { | ||
111 | "Binary:Wix4NetFxCA_A64\t[Binary data]", | ||
112 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t", | ||
113 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t", | ||
114 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_A64\t3137\tWix4NetFxCA_A64\tExecNetFx\t", | ||
115 | "CustomAction:Wix4NetFxExecuteNativeImageUninstall_A64\t3137\tWix4NetFxCA_A64\tExecNetFx\t", | ||
116 | "CustomAction:Wix4NetFxScheduleNativeImage_A64\t1\tWix4NetFxCA_A64\tSchedNetFx\t", | ||
117 | "Wix4NetFxNativeImage:ExampleNgen\tfil6349_KNDJhqShNzVdHX3ihhvA6Y\t3\t8\t\t", | ||
118 | }, results.OrderBy(s => s).ToArray()); | ||
119 | } | ||
120 | |||
121 | private static void Build(string[] args) | ||
122 | { | ||
123 | var result = WixRunner.Execute(args); | ||
124 | result.AssertSuccess(); | ||
125 | } | ||
126 | |||
127 | private static void BuildX64(string[] args) | ||
128 | { | ||
129 | var newArgs = args.ToList(); | ||
130 | newArgs.Add("-platform"); | ||
131 | newArgs.Add("x64"); | ||
132 | |||
133 | var result = WixRunner.Execute(newArgs.ToArray()); | ||
134 | result.AssertSuccess(); | ||
135 | } | ||
136 | |||
137 | private static void BuildARM64(string[] args) | ||
138 | { | ||
139 | var newArgs = args.ToList(); | ||
140 | newArgs.Add("-platform"); | ||
141 | newArgs.Add("arm64"); | ||
142 | |||
143 | var result = WixRunner.Execute(newArgs.ToArray()); | ||
144 | result.AssertSuccess(); | ||
145 | } | ||
146 | } | ||
147 | } | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingDotNetCorePackages/BundleLatest.wxs b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingDotNetCorePackages/BundleLatest.wxs new file mode 100644 index 00000000..8e3d2c30 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingDotNetCorePackages/BundleLatest.wxs | |||
@@ -0,0 +1,12 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> | ||
2 | <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> | ||
3 | <BootstrapperApplication> | ||
4 | <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" /> | ||
5 | </BootstrapperApplication> | ||
6 | <Chain> | ||
7 | <PackageGroupRef Id="AspNetCoreRuntime31Redist_x86" /> | ||
8 | <PackageGroupRef Id="DesktopNetCoreRuntime31Redist_x86" /> | ||
9 | <PackageGroupRef Id="DotNetCoreRuntime31Redist_x86" /> | ||
10 | </Chain> | ||
11 | </Bundle> | ||
12 | </Wix> | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingDotNetCorePackages/BundleLatest_x64.wxs b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingDotNetCorePackages/BundleLatest_x64.wxs new file mode 100644 index 00000000..fc42ac99 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingDotNetCorePackages/BundleLatest_x64.wxs | |||
@@ -0,0 +1,12 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> | ||
2 | <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> | ||
3 | <BootstrapperApplication> | ||
4 | <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" /> | ||
5 | </BootstrapperApplication> | ||
6 | <Chain> | ||
7 | <PackageGroupRef Id="AspNetCoreRuntime31Redist_x64" /> | ||
8 | <PackageGroupRef Id="DesktopNetCoreRuntime31Redist_x64" /> | ||
9 | <PackageGroupRef Id="DotNetCoreRuntime31Redist_x64" /> | ||
10 | </Chain> | ||
11 | </Bundle> | ||
12 | </Wix> | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/Package.en-us.wxl b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/Package.en-us.wxl new file mode 100644 index 00000000..5301bb1a --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/Package.en-us.wxl | |||
@@ -0,0 +1,9 @@ | |||
1 | <!-- | ||
2 | This file contains the declaration of all the localizable strings. | ||
3 | --> | ||
4 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US"> | ||
5 | |||
6 | <String Id="DowngradeError">A newer version of [ProductName] is already installed.</String> | ||
7 | <String Id="FeatureTitle">MsiPackage</String> | ||
8 | |||
9 | </WixLocalization> | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/Package.wxs b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/Package.wxs new file mode 100644 index 00000000..ace73680 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/Package.wxs | |||
@@ -0,0 +1,15 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a"> | ||
3 | <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> | ||
4 | |||
5 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> | ||
6 | <ComponentGroupRef Id="ProductComponents" /> | ||
7 | </Feature> | ||
8 | </Package> | ||
9 | |||
10 | <Fragment> | ||
11 | <StandardDirectory Id="ProgramFilesFolder"> | ||
12 | <Directory Id="INSTALLFOLDER" Name="MsiPackage" /> | ||
13 | </StandardDirectory> | ||
14 | </Fragment> | ||
15 | </Wix> | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/PackageComponents.wxs b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/PackageComponents.wxs new file mode 100644 index 00000000..a1c806d9 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/PackageComponents.wxs | |||
@@ -0,0 +1,11 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:netfx="http://wixtoolset.org/schemas/v4/wxs/netfx"> | ||
2 | <Fragment> | ||
3 | <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> | ||
4 | <Component> | ||
5 | <File Name="fake.ddl" Source="example.txt"> | ||
6 | <netfx:NativeImage Id="ExampleNgen" /> | ||
7 | </File> | ||
8 | </Component> | ||
9 | </ComponentGroup> | ||
10 | </Fragment> | ||
11 | </Wix> | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/example.txt b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/example.txt new file mode 100644 index 00000000..1b4ffe8a --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/TestData/UsingNativeImage/example.txt | |||
@@ -0,0 +1 @@ | |||
This is example.txt. \ No newline at end of file | |||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj b/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj new file mode 100644 index 00000000..1c41d176 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.csproj | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project Sdk="Microsoft.NET.Sdk"> | ||
5 | <PropertyGroup> | ||
6 | <TargetFramework>netcoreapp3.1</TargetFramework> | ||
7 | <DebugType>embedded</DebugType> | ||
8 | <IsPackable>false</IsPackable> | ||
9 | </PropertyGroup> | ||
10 | |||
11 | <ItemGroup> | ||
12 | <Content Include="TestData\**" CopyToOutputDirectory="PreserveNewest" /> | ||
13 | </ItemGroup> | ||
14 | |||
15 | <ItemGroup> | ||
16 | <ProjectReference Include="..\..\wixext\WixToolset.Netfx.wixext.csproj" /> | ||
17 | </ItemGroup> | ||
18 | |||
19 | <ItemGroup> | ||
20 | <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.*" /> | ||
21 | <PackageReference Include="WixToolset.Core" Version="4.0.*" /> | ||
22 | <PackageReference Include="WixToolset.Core.Burn" Version="4.0.*" /> | ||
23 | <PackageReference Include="WixToolset.Core.WindowsInstaller" Version="4.0.*" /> | ||
24 | <PackageReference Include="WixToolset.Core.TestPackage" Version="4.0.*" /> | ||
25 | </ItemGroup> | ||
26 | |||
27 | <ItemGroup> | ||
28 | <PackageReference Include="WixBuildTools.TestSupport" Version="4.0.*" /> | ||
29 | </ItemGroup> | ||
30 | |||
31 | <ItemGroup> | ||
32 | <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" /> | ||
33 | <PackageReference Include="xunit" Version="2.4.1" /> | ||
34 | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" /> | ||
35 | </ItemGroup> | ||
36 | |||
37 | <Target Name="CopyExtensions" AfterTargets="Build"> | ||
38 | <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(WixExtension)" /> | ||
39 | </Target> | ||
40 | </Project> | ||
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.v3.ncrunchproject b/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.v3.ncrunchproject new file mode 100644 index 00000000..7b5b2139 --- /dev/null +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/WixToolsetTest.Netfx.v3.ncrunchproject | |||
@@ -0,0 +1,5 @@ | |||
1 | <ProjectConfiguration> | ||
2 | <Settings> | ||
3 | <CopyReferencedAssembliesToWorkspace>True</CopyReferencedAssembliesToWorkspace> | ||
4 | </Settings> | ||
5 | </ProjectConfiguration> \ No newline at end of file | ||
diff --git a/src/ext/NetFx/wix.snk b/src/ext/NetFx/wix.snk new file mode 100644 index 00000000..3908a66a --- /dev/null +++ b/src/ext/NetFx/wix.snk | |||
Binary files differ | |||
diff --git a/src/ext/NetFx/wixext/NetFxCompiler.cs b/src/ext/NetFx/wixext/NetFxCompiler.cs new file mode 100644 index 00000000..90aa8bcb --- /dev/null +++ b/src/ext/NetFx/wixext/NetFxCompiler.cs | |||
@@ -0,0 +1,163 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Xml.Linq; | ||
8 | using WixToolset.Data; | ||
9 | using WixToolset.Extensibility; | ||
10 | using WixToolset.Extensibility.Data; | ||
11 | using WixToolset.Netfx.Symbols; | ||
12 | |||
13 | /// <summary> | ||
14 | /// The compiler for the WiX Toolset .NET Framework Extension. | ||
15 | /// </summary> | ||
16 | public sealed class NetfxCompiler : BaseCompilerExtension | ||
17 | { | ||
18 | public override XNamespace Namespace => "http://wixtoolset.org/schemas/v4/wxs/netfx"; | ||
19 | |||
20 | /// <summary> | ||
21 | /// Processes an element for the Compiler. | ||
22 | /// </summary> | ||
23 | /// <param name="parentElement">Parent element of element to process.</param> | ||
24 | /// <param name="element">Element to process.</param> | ||
25 | /// <param name="contextValues">Extra information about the context in which this element is being parsed.</param> | ||
26 | public override void ParseElement(Intermediate intermediate, IntermediateSection section, XElement parentElement, XElement element, IDictionary<string, string> context) | ||
27 | { | ||
28 | switch (parentElement.Name.LocalName) | ||
29 | { | ||
30 | case "File": | ||
31 | string fileId = context["FileId"]; | ||
32 | |||
33 | switch (element.Name.LocalName) | ||
34 | { | ||
35 | case "NativeImage": | ||
36 | this.ParseNativeImageElement(intermediate, section, element, fileId); | ||
37 | break; | ||
38 | default: | ||
39 | this.ParseHelper.UnexpectedElement(parentElement, element); | ||
40 | break; | ||
41 | } | ||
42 | break; | ||
43 | default: | ||
44 | this.ParseHelper.UnexpectedElement(parentElement, element); | ||
45 | break; | ||
46 | } | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Parses a NativeImage element. | ||
51 | /// </summary> | ||
52 | /// <param name="element">The element to parse.</param> | ||
53 | /// <param name="fileId">The file identifier of the parent element.</param> | ||
54 | private void ParseNativeImageElement(Intermediate intermediate, IntermediateSection section, XElement element, string fileId) | ||
55 | { | ||
56 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | ||
57 | Identifier id = null; | ||
58 | string appBaseDirectory = null; | ||
59 | string assemblyApplication = null; | ||
60 | int attributes = 0x8; // 32bit is on by default | ||
61 | int priority = 3; | ||
62 | |||
63 | foreach (var attrib in element.Attributes()) | ||
64 | { | ||
65 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) | ||
66 | { | ||
67 | switch (attrib.Name.LocalName) | ||
68 | { | ||
69 | case "Id": | ||
70 | id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib); | ||
71 | break; | ||
72 | case "AppBaseDirectory": | ||
73 | appBaseDirectory = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
74 | |||
75 | // See if a formatted value is specified. | ||
76 | if (-1 == appBaseDirectory.IndexOf("[", StringComparison.Ordinal)) | ||
77 | { | ||
78 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.Directory, appBaseDirectory); | ||
79 | } | ||
80 | break; | ||
81 | case "AssemblyApplication": | ||
82 | assemblyApplication = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
83 | |||
84 | // See if a formatted value is specified. | ||
85 | if (-1 == assemblyApplication.IndexOf("[", StringComparison.Ordinal)) | ||
86 | { | ||
87 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.File, assemblyApplication); | ||
88 | } | ||
89 | break; | ||
90 | case "Debug": | ||
91 | if (YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib)) | ||
92 | { | ||
93 | attributes |= 0x1; | ||
94 | } | ||
95 | break; | ||
96 | case "Dependencies": | ||
97 | if (YesNoType.No == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib)) | ||
98 | { | ||
99 | attributes |= 0x2; | ||
100 | } | ||
101 | break; | ||
102 | case "Platform": | ||
103 | string platformValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
104 | if (0 < platformValue.Length) | ||
105 | { | ||
106 | switch (platformValue) | ||
107 | { | ||
108 | case "32bit": | ||
109 | // 0x8 is already on by default | ||
110 | break; | ||
111 | case "64bit": | ||
112 | attributes &= ~0x8; | ||
113 | attributes |= 0x10; | ||
114 | break; | ||
115 | case "all": | ||
116 | attributes |= 0x10; | ||
117 | break; | ||
118 | } | ||
119 | } | ||
120 | break; | ||
121 | case "Priority": | ||
122 | priority = this.ParseHelper.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, 3); | ||
123 | break; | ||
124 | case "Profile": | ||
125 | if (YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib)) | ||
126 | { | ||
127 | attributes |= 0x4; | ||
128 | } | ||
129 | break; | ||
130 | default: | ||
131 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
132 | break; | ||
133 | } | ||
134 | } | ||
135 | else | ||
136 | { | ||
137 | this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib); | ||
138 | } | ||
139 | } | ||
140 | |||
141 | if (null == id) | ||
142 | { | ||
143 | id = this.ParseHelper.CreateIdentifier("nni", fileId); | ||
144 | } | ||
145 | |||
146 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); | ||
147 | |||
148 | this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4NetFxScheduleNativeImage", this.Context.Platform, CustomActionPlatforms.ARM64 | CustomActionPlatforms.X64 | CustomActionPlatforms.X86); | ||
149 | |||
150 | if (!this.Messaging.EncounteredError) | ||
151 | { | ||
152 | section.AddSymbol(new NetFxNativeImageSymbol(sourceLineNumbers, id) | ||
153 | { | ||
154 | FileRef = fileId, | ||
155 | Priority = priority, | ||
156 | Attributes = attributes, | ||
157 | ApplicationFileRef = assemblyApplication, | ||
158 | ApplicationBaseDirectoryRef = appBaseDirectory, | ||
159 | }); | ||
160 | } | ||
161 | } | ||
162 | } | ||
163 | } | ||
diff --git a/src/ext/NetFx/wixext/NetFxDecompiler.cs b/src/ext/NetFx/wixext/NetFxDecompiler.cs new file mode 100644 index 00000000..e30905d1 --- /dev/null +++ b/src/ext/NetFx/wixext/NetFxDecompiler.cs | |||
@@ -0,0 +1,139 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Extensions | ||
4 | { | ||
5 | #if TODO_CONSIDER_DECOMPILER | ||
6 | using System; | ||
7 | using System.Collections; | ||
8 | using System.Diagnostics; | ||
9 | using System.Globalization; | ||
10 | using WixToolset.Data; | ||
11 | using WixToolset.Extensibility; | ||
12 | using NetFx = WixToolset.Extensions.Serialize.NetFx; | ||
13 | using Wix = WixToolset.Data.Serialize; | ||
14 | |||
15 | /// <summary> | ||
16 | /// The decompiler for the WiX Toolset .NET Framework Extension. | ||
17 | /// </summary> | ||
18 | public sealed class NetFxDecompiler : DecompilerExtension | ||
19 | { | ||
20 | /// <summary> | ||
21 | /// Creates a decompiler for NetFx Extension. | ||
22 | /// </summary> | ||
23 | public NetFxDecompiler() | ||
24 | { | ||
25 | this.TableDefinitions = NetFxExtensionData.GetExtensionTableDefinitions(); | ||
26 | } | ||
27 | |||
28 | /// <summary> | ||
29 | /// Get the extensions library to be removed. | ||
30 | /// </summary> | ||
31 | /// <param name="tableDefinitions">Table definitions for library.</param> | ||
32 | /// <returns>Library to remove from decompiled output.</returns> | ||
33 | public override Library GetLibraryToRemove(TableDefinitionCollection tableDefinitions) | ||
34 | { | ||
35 | return NetFxExtensionData.GetExtensionLibrary(tableDefinitions); | ||
36 | } | ||
37 | |||
38 | /// <summary> | ||
39 | /// Decompiles an extension table. | ||
40 | /// </summary> | ||
41 | /// <param name="table">The table to decompile.</param> | ||
42 | public override void DecompileTable(Table table) | ||
43 | { | ||
44 | switch (table.Name) | ||
45 | { | ||
46 | case "NetFxNativeImage": | ||
47 | this.DecompileNetFxNativeImageTable(table); | ||
48 | break; | ||
49 | default: | ||
50 | base.DecompileTable(table); | ||
51 | break; | ||
52 | } | ||
53 | } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Decompile the NetFxNativeImage table. | ||
57 | /// </summary> | ||
58 | /// <param name="table">The table to decompile.</param> | ||
59 | private void DecompileNetFxNativeImageTable(Table table) | ||
60 | { | ||
61 | foreach (Row row in table.Rows) | ||
62 | { | ||
63 | NetFx.NativeImage nativeImage = new NetFx.NativeImage(); | ||
64 | |||
65 | nativeImage.Id = (string)row[0]; | ||
66 | |||
67 | switch ((int)row[2]) | ||
68 | { | ||
69 | case 0: | ||
70 | nativeImage.Priority = NetFx.NativeImage.PriorityType.Item0; | ||
71 | break; | ||
72 | case 1: | ||
73 | nativeImage.Priority = NetFx.NativeImage.PriorityType.Item1; | ||
74 | break; | ||
75 | case 2: | ||
76 | nativeImage.Priority = NetFx.NativeImage.PriorityType.Item2; | ||
77 | break; | ||
78 | case 3: | ||
79 | nativeImage.Priority = NetFx.NativeImage.PriorityType.Item3; | ||
80 | break; | ||
81 | } | ||
82 | |||
83 | if (null != row[3]) | ||
84 | { | ||
85 | int attributes = (int)row[3]; | ||
86 | |||
87 | if (0x1 == (attributes & 0x1)) | ||
88 | { | ||
89 | nativeImage.Debug = NetFx.YesNoType.yes; | ||
90 | } | ||
91 | |||
92 | if (0x2 == (attributes & 0x2)) | ||
93 | { | ||
94 | nativeImage.Dependencies = NetFx.YesNoType.no; | ||
95 | } | ||
96 | |||
97 | if (0x4 == (attributes & 0x4)) | ||
98 | { | ||
99 | nativeImage.Profile = NetFx.YesNoType.yes; | ||
100 | } | ||
101 | |||
102 | if (0x8 == (attributes & 0x8) && 0x10 == (attributes & 0x10)) | ||
103 | { | ||
104 | nativeImage.Platform = NetFx.NativeImage.PlatformType.all; | ||
105 | } | ||
106 | else if (0x8 == (attributes & 0x8)) | ||
107 | { | ||
108 | nativeImage.Platform = NetFx.NativeImage.PlatformType.Item32bit; | ||
109 | } | ||
110 | else if (0x10 == (attributes & 0x10)) | ||
111 | { | ||
112 | nativeImage.Platform = NetFx.NativeImage.PlatformType.Item64bit; | ||
113 | } | ||
114 | } | ||
115 | |||
116 | if (null != row[4]) | ||
117 | { | ||
118 | nativeImage.AssemblyApplication = (string)row[4]; | ||
119 | } | ||
120 | |||
121 | if (null != row[5]) | ||
122 | { | ||
123 | nativeImage.AppBaseDirectory = (string)row[5]; | ||
124 | } | ||
125 | |||
126 | Wix.File file = (Wix.File)this.Core.GetIndexedElement("File", (string)row[1]); | ||
127 | if (null != file) | ||
128 | { | ||
129 | file.AddChild(nativeImage); | ||
130 | } | ||
131 | else | ||
132 | { | ||
133 | this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "File_", (string)row[1], "File")); | ||
134 | } | ||
135 | } | ||
136 | } | ||
137 | } | ||
138 | #endif | ||
139 | } | ||
diff --git a/src/ext/NetFx/wixext/NetFxExtensionData.cs b/src/ext/NetFx/wixext/NetFxExtensionData.cs new file mode 100644 index 00000000..0a24ef1e --- /dev/null +++ b/src/ext/NetFx/wixext/NetFxExtensionData.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx | ||
4 | { | ||
5 | using WixToolset.Data; | ||
6 | using WixToolset.Extensibility; | ||
7 | using WixToolset.Netfx.Symbols; | ||
8 | |||
9 | /// <summary> | ||
10 | /// The WiX Toolset .NET Framework Extension. | ||
11 | /// </summary> | ||
12 | public sealed class NetfxExtensionData : BaseExtensionData | ||
13 | { | ||
14 | public override bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition) | ||
15 | { | ||
16 | symbolDefinition = (name == NetfxSymbolDefinitionNames.NetFxNativeImage) ? NetfxSymbolDefinitions.NetFxNativeImage : null; | ||
17 | return symbolDefinition != null; | ||
18 | } | ||
19 | |||
20 | public override Intermediate GetLibrary(ISymbolDefinitionCreator symbolDefinitions) | ||
21 | { | ||
22 | return Intermediate.Load(typeof(NetfxExtensionData).Assembly, "WixToolset.Netfx.netfx.wixlib", symbolDefinitions); | ||
23 | } | ||
24 | } | ||
25 | } | ||
diff --git a/src/ext/NetFx/wixext/NetfxExtensionFactory.cs b/src/ext/NetFx/wixext/NetfxExtensionFactory.cs new file mode 100644 index 00000000..fe618460 --- /dev/null +++ b/src/ext/NetFx/wixext/NetfxExtensionFactory.cs | |||
@@ -0,0 +1,18 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using WixToolset.Extensibility; | ||
8 | |||
9 | public class NetfxExtensionFactory : BaseExtensionFactory | ||
10 | { | ||
11 | protected override IReadOnlyCollection<Type> ExtensionTypes => new[] | ||
12 | { | ||
13 | typeof(NetfxCompiler), | ||
14 | typeof(NetfxExtensionData), | ||
15 | typeof(NetfxWindowsInstallerBackendBinderExtension), | ||
16 | }; | ||
17 | } | ||
18 | } | ||
diff --git a/src/ext/NetFx/wixext/NetfxTableDefinitions.cs b/src/ext/NetFx/wixext/NetfxTableDefinitions.cs new file mode 100644 index 00000000..1b2a4d21 --- /dev/null +++ b/src/ext/NetFx/wixext/NetfxTableDefinitions.cs | |||
@@ -0,0 +1,30 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx | ||
4 | { | ||
5 | using WixToolset.Data.WindowsInstaller; | ||
6 | using WixToolset.Netfx.Symbols; | ||
7 | |||
8 | public static class NetfxTableDefinitions | ||
9 | { | ||
10 | public static readonly TableDefinition NetFxNativeImage = new TableDefinition( | ||
11 | "Wix4NetFxNativeImage", | ||
12 | NetfxSymbolDefinitions.NetFxNativeImage, | ||
13 | new[] | ||
14 | { | ||
15 | new ColumnDefinition("Wix4NetFxNativeImage", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The primary key, a non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
16 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "The assembly for which a native image will be generated.", modularizeType: ColumnModularizeType.Column), | ||
17 | new ColumnDefinition("Priority", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Integer, minValue: 0, maxValue: 3, description: "The priority for generating this native image: 0 is syncronous, 1-3 represent various levels of queued generation."), | ||
18 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Integer, minValue: 0, maxValue: 2147483647, description: "Integer containing bit flags representing native image attributes."), | ||
19 | new ColumnDefinition("File_Application", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The application which loads this assembly.", modularizeType: ColumnModularizeType.Column), | ||
20 | new ColumnDefinition("Directory_ApplicationBase", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The directory containing the application which loads this assembly.", modularizeType: ColumnModularizeType.Column), | ||
21 | }, | ||
22 | symbolIdIsPrimaryKey: true | ||
23 | ); | ||
24 | |||
25 | public static readonly TableDefinition[] All = new[] | ||
26 | { | ||
27 | NetFxNativeImage, | ||
28 | }; | ||
29 | } | ||
30 | } | ||
diff --git a/src/ext/NetFx/wixext/NetfxWindowsInstallerBackendExtension.cs b/src/ext/NetFx/wixext/NetfxWindowsInstallerBackendExtension.cs new file mode 100644 index 00000000..7d4fe475 --- /dev/null +++ b/src/ext/NetFx/wixext/NetfxWindowsInstallerBackendExtension.cs | |||
@@ -0,0 +1,13 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx | ||
4 | { | ||
5 | using System.Collections.Generic; | ||
6 | using WixToolset.Data.WindowsInstaller; | ||
7 | using WixToolset.Extensibility; | ||
8 | |||
9 | public class NetfxWindowsInstallerBackendBinderExtension : BaseWindowsInstallerBackendBinderExtension | ||
10 | { | ||
11 | public override IReadOnlyCollection<TableDefinition> TableDefinitions => NetfxTableDefinitions.All; | ||
12 | } | ||
13 | } | ||
diff --git a/src/ext/NetFx/wixext/Symbols/NetFxNativeImageSymbol.cs b/src/ext/NetFx/wixext/Symbols/NetFxNativeImageSymbol.cs new file mode 100644 index 00000000..3803abd6 --- /dev/null +++ b/src/ext/NetFx/wixext/Symbols/NetFxNativeImageSymbol.cs | |||
@@ -0,0 +1,58 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx.Symbols | ||
4 | { | ||
5 | using WixToolset.Data; | ||
6 | |||
7 | public enum NetFxNativeImageSymbolFields | ||
8 | { | ||
9 | FileRef, | ||
10 | Priority, | ||
11 | Attributes, | ||
12 | ApplicationFileRef, | ||
13 | ApplicationBaseDirectoryRef, | ||
14 | } | ||
15 | |||
16 | public class NetFxNativeImageSymbol : IntermediateSymbol | ||
17 | { | ||
18 | public NetFxNativeImageSymbol() : base(NetfxSymbolDefinitions.NetFxNativeImage, null, null) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | public NetFxNativeImageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(NetfxSymbolDefinitions.NetFxNativeImage, sourceLineNumber, id) | ||
23 | { | ||
24 | } | ||
25 | |||
26 | public IntermediateField this[NetFxNativeImageSymbolFields index] => this.Fields[(int)index]; | ||
27 | |||
28 | public string FileRef | ||
29 | { | ||
30 | get => this.Fields[(int)NetFxNativeImageSymbolFields.FileRef].AsString(); | ||
31 | set => this.Set((int)NetFxNativeImageSymbolFields.FileRef, value); | ||
32 | } | ||
33 | |||
34 | public int Priority | ||
35 | { | ||
36 | get => this.Fields[(int)NetFxNativeImageSymbolFields.Priority].AsNumber(); | ||
37 | set => this.Set((int)NetFxNativeImageSymbolFields.Priority, value); | ||
38 | } | ||
39 | |||
40 | public int Attributes | ||
41 | { | ||
42 | get => this.Fields[(int)NetFxNativeImageSymbolFields.Attributes].AsNumber(); | ||
43 | set => this.Set((int)NetFxNativeImageSymbolFields.Attributes, value); | ||
44 | } | ||
45 | |||
46 | public string ApplicationFileRef | ||
47 | { | ||
48 | get => this.Fields[(int)NetFxNativeImageSymbolFields.ApplicationFileRef].AsString(); | ||
49 | set => this.Set((int)NetFxNativeImageSymbolFields.ApplicationFileRef, value); | ||
50 | } | ||
51 | |||
52 | public string ApplicationBaseDirectoryRef | ||
53 | { | ||
54 | get => this.Fields[(int)NetFxNativeImageSymbolFields.ApplicationBaseDirectoryRef].AsString(); | ||
55 | set => this.Set((int)NetFxNativeImageSymbolFields.ApplicationBaseDirectoryRef, value); | ||
56 | } | ||
57 | } | ||
58 | } \ No newline at end of file | ||
diff --git a/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs b/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs new file mode 100644 index 00000000..3c0f1176 --- /dev/null +++ b/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs | |||
@@ -0,0 +1,26 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Netfx.Symbols | ||
4 | { | ||
5 | using WixToolset.Data; | ||
6 | |||
7 | public static class NetfxSymbolDefinitionNames | ||
8 | { | ||
9 | public static string NetFxNativeImage { get; } = "NetFxNativeImage"; | ||
10 | } | ||
11 | |||
12 | public static class NetfxSymbolDefinitions | ||
13 | { | ||
14 | public static readonly IntermediateSymbolDefinition NetFxNativeImage = new IntermediateSymbolDefinition( | ||
15 | NetfxSymbolDefinitionNames.NetFxNativeImage, | ||
16 | new[] | ||
17 | { | ||
18 | new IntermediateFieldDefinition(nameof(NetFxNativeImageSymbolFields.FileRef), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(NetFxNativeImageSymbolFields.Priority), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(NetFxNativeImageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
21 | new IntermediateFieldDefinition(nameof(NetFxNativeImageSymbolFields.ApplicationFileRef), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(NetFxNativeImageSymbolFields.ApplicationBaseDirectoryRef), IntermediateFieldType.String), | ||
23 | }, | ||
24 | typeof(NetFxNativeImageSymbol)); | ||
25 | } | ||
26 | } | ||
diff --git a/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.csproj b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.csproj new file mode 100644 index 00000000..7c1d55c1 --- /dev/null +++ b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.csproj | |||
@@ -0,0 +1,31 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project Sdk="Microsoft.NET.Sdk"> | ||
5 | <PropertyGroup> | ||
6 | <TargetFramework>netstandard2.0</TargetFramework> | ||
7 | <DebugType>embedded</DebugType> | ||
8 | <RootNamespace>WixToolset.Netfx</RootNamespace> | ||
9 | <Description>WiX Toolset .NET Framework Extension</Description> | ||
10 | <Title>WiX Toolset .NET Framework Extension</Title> | ||
11 | <IncludeSymbols>true</IncludeSymbols> | ||
12 | </PropertyGroup> | ||
13 | |||
14 | <ItemGroup> | ||
15 | <EmbeddedResource Include="$(OutputPath)..\netfx.wixlib" /> | ||
16 | </ItemGroup> | ||
17 | |||
18 | <ItemGroup> | ||
19 | <ProjectReference Include="..\wixlib\netfx.wixproj" ReferenceOutputAssembly="false" Condition=" '$(NCrunch)'=='' " /> | ||
20 | </ItemGroup> | ||
21 | |||
22 | <ItemGroup> | ||
23 | <PackageReference Include="WixToolset.Data" Version="4.0.*" PrivateAssets="all" /> | ||
24 | <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" PrivateAssets="all" /> | ||
25 | </ItemGroup> | ||
26 | |||
27 | <ItemGroup> | ||
28 | <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="all" /> | ||
29 | <PackageReference Include="Nerdbank.GitVersioning" Version="3.3.37" PrivateAssets="all" /> | ||
30 | </ItemGroup> | ||
31 | </Project> | ||
diff --git a/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.nuspec b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.nuspec new file mode 100644 index 00000000..ba3eaade --- /dev/null +++ b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.nuspec | |||
@@ -0,0 +1,25 @@ | |||
1 | <?xml version="1.0"?> | ||
2 | <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | ||
3 | <metadata minClientVersion="4.0"> | ||
4 | <id>$id$</id> | ||
5 | <version>$version$</version> | ||
6 | <title>$title$</title> | ||
7 | <description>$description$</description> | ||
8 | <authors>$authors$</authors> | ||
9 | <license type="expression">MS-RL</license> | ||
10 | <requireLicenseAcceptance>false</requireLicenseAcceptance> | ||
11 | <copyright>$copyright$</copyright> | ||
12 | <projectUrl>$projectUrl$</projectUrl> | ||
13 | <repository type="$repositorytype$" url="$repositoryurl$" commit="$repositorycommit$" /> | ||
14 | </metadata> | ||
15 | |||
16 | <files> | ||
17 | <file src="$projectFolder$$id$.targets" target="build" /> | ||
18 | |||
19 | <file src="netstandard2.0\$id$.dll" target="tools" /> | ||
20 | |||
21 | <file src="ARM64\*.pdb" target="pdbs\ARM64" /> | ||
22 | <file src="x86\*.pdb" target="pdbs\x86" /> | ||
23 | <file src="x64\*.pdb" target="pdbs\x64" /> | ||
24 | </files> | ||
25 | </package> | ||
diff --git a/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.targets b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.targets new file mode 100644 index 00000000..2ed9c488 --- /dev/null +++ b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.targets | |||
@@ -0,0 +1,11 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> | ||
5 | <PropertyGroup> | ||
6 | <WixToolsetNetfxWixextPath Condition=" '$(WixToolsetNetfxWixextPath)' == '' ">$(MSBuildThisFileDirectory)..\tools\WixToolset.Netfx.wixext.dll</WixToolsetNetfxWixextPath> | ||
7 | </PropertyGroup> | ||
8 | <ItemGroup> | ||
9 | <WixExtension Include="$(WixToolsetNetfxWixextPath)" /> | ||
10 | </ItemGroup> | ||
11 | </Project> | ||
diff --git a/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.v3.ncrunchproject b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.v3.ncrunchproject new file mode 100644 index 00000000..93e4df3d --- /dev/null +++ b/src/ext/NetFx/wixext/WixToolset.Netfx.wixext.v3.ncrunchproject | |||
@@ -0,0 +1,7 @@ | |||
1 | <ProjectConfiguration> | ||
2 | <Settings> | ||
3 | <AdditionalFilesToIncludeForProject> | ||
4 | <Value>..\..\build\Debug\netfx.wixlib</Value> | ||
5 | </AdditionalFilesToIncludeForProject> | ||
6 | </Settings> | ||
7 | </ProjectConfiguration> \ No newline at end of file | ||
diff --git a/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs b/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs new file mode 100644 index 00000000..990dc0bf --- /dev/null +++ b/src/ext/NetFx/wixlib/NetCore3.1.12_x64.wxs | |||
@@ -0,0 +1,58 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <?define NetCorePlatform = x64?> | ||
6 | <?define NetCoreIdVersion = 3112?> | ||
7 | <?define NetCoreVersion = 3.1.12?> | ||
8 | <?include NetCore3_Platform.wxi?> | ||
9 | |||
10 | <?define AspNetCoreRedistLink = https://download.visualstudio.microsoft.com/download/pr/20cf277c-2ccf-449f-a0b8-925ba0c175e7/aa50b052ceb8a8d36a5b4f9b8d0bd91c/aspnetcore-runtime-3.1.12-win-x64.exe?> | ||
11 | <?define DesktopNetCoreRedistLink = https://download.visualstudio.microsoft.com/download/pr/076a47e9-c65b-4b78-95a7-93eb988891a4/3574764590cfa650e0aa87c44d3fe384/windowsdesktop-runtime-3.1.12-win-x64.exe?> | ||
12 | <?define DotNetCoreRedistLink = https://download.visualstudio.microsoft.com/download/pr/2fdc3009-cf5c-4cf6-8f3b-a61e83200cbb/2c71ee04b48103a7464f4e28a8bf339b/dotnet-runtime-3.1.12-win-x64.exe?> | ||
13 | |||
14 | <Fragment> | ||
15 | <util:DirectorySearchRef Id="$(var.AspNetCoreId)" /> | ||
16 | |||
17 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition" Value="$(var.AspNetCoreId)" Overridable="yes" /> | ||
18 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition" Value="" Overridable="yes" /> | ||
19 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory" Value="redist\" Overridable="yes" /> | ||
20 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | ||
21 | |||
22 | <PackageGroup Id="$(var.AspNetCoreRedistId)"> | ||
23 | <ExePackage InstallArguments="$(var.AspNetCoreRedistInstallArguments)" RepairArguments="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments)" UninstallArguments="$(var.AspNetCoreRedistUninstallArguments)" PerMachine="yes" DetectCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.AspNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.AspNetCoreRedistLog)"> | ||
24 | <ExePackagePayload Name="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)aspnetcore-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.AspNetCoreRedistLink)" Description="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Hash="5CE9839CAE90FB2936033431F2905E97C7DC080DC50108D58714939CCCC6A265694B8259A3BF742A68BF04D9CFFB0602B0306DD401C4CE644BDB96C7D1168E59" ProductName="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Size="7841808" Version="3.1.12.21070" /> | ||
25 | </ExePackage> | ||
26 | </PackageGroup> | ||
27 | </Fragment> | ||
28 | |||
29 | <Fragment> | ||
30 | <util:DirectorySearchRef Id="$(var.DesktopNetCoreId)" /> | ||
31 | |||
32 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition" Value="$(var.DesktopNetCoreId)" Overridable="yes" /> | ||
33 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition" Value="" Overridable="yes" /> | ||
34 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory" Value="redist\" Overridable="yes" /> | ||
35 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | ||
36 | |||
37 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)"> | ||
38 | <ExePackage InstallArguments="$(var.DesktopNetCoreRedistInstallArguments)" RepairArguments="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments)" UninstallArguments="$(var.DesktopNetCoreRedistUninstallArguments)" PerMachine="yes" DetectCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DesktopNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DesktopNetCoreRedistLog)"> | ||
39 | <ExePackagePayload Name="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)windowsdesktop-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DesktopNetCoreRedistLink)" Description="Microsoft Windows Desktop Runtime - 3.1.12 (x64)" Hash="CD69B8722B2FF175FADD6774AB6A97F89292FC57A15CEC95218E79FFF1E26F46A7EFFFB15CE0F6D22B83B991F7083BB5C04F5158F87D298EA0F204933F8ECD27" ProductName="Microsoft Windows Desktop Runtime - 3.1.12 (x64)" Size="54284816" Version="3.1.12.29719" /> | ||
40 | </ExePackage> | ||
41 | </PackageGroup> | ||
42 | </Fragment> | ||
43 | |||
44 | <Fragment> | ||
45 | <util:DirectorySearchRef Id="$(var.DotNetCoreId)" /> | ||
46 | |||
47 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition" Value="$(var.DotNetCoreId)" Overridable="yes" /> | ||
48 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition" Value="" Overridable="yes" /> | ||
49 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory" Value="redist\" Overridable="yes" /> | ||
50 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | ||
51 | |||
52 | <PackageGroup Id="$(var.DotNetCoreRedistId)"> | ||
53 | <ExePackage InstallArguments="$(var.DotNetCoreRedistInstallArguments)" RepairArguments="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments)" UninstallArguments="$(var.DotNetCoreRedistUninstallArguments)" PerMachine="yes" DetectCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DotNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DotNetCoreRedistLog)"> | ||
54 | <ExePackagePayload Name="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)dotnet-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DotNetCoreRedistLink)" Description="Microsoft .NET Core Runtime - 3.1.12 (x64)" Hash="9B3F882AE5DFDC8B50D3CEC4F3292292D658B2FECB84B3F73426FB3C16E6FC6B8E7118EF559CFAE25ED7A2C175FA4D89E18986CA3C05D15F706524FBB667F702" ProductName="Microsoft .NET Core Runtime - 3.1.12 (x64)" Size="26090616" Version="3.1.12.29719" /> | ||
55 | </ExePackage> | ||
56 | </PackageGroup> | ||
57 | </Fragment> | ||
58 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs b/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs new file mode 100644 index 00000000..b6d5d371 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetCore3.1.12_x86.wxs | |||
@@ -0,0 +1,58 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <?define NetCorePlatform = x86?> | ||
6 | <?define NetCoreIdVersion = 3112?> | ||
7 | <?define NetCoreVersion = 3.1.12?> | ||
8 | <?include NetCore3_Platform.wxi?> | ||
9 | |||
10 | <?define AspNetCoreRedistLink = https://download.visualstudio.microsoft.com/download/pr/55d6ff56-2725-4657-bffd-fdf35d6816fd/7431d1d3533f0b1ac97df734c45c33f2/aspnetcore-runtime-3.1.12-win-x86.exe?> | ||
11 | <?define DesktopNetCoreRedistLink = https://download.visualstudio.microsoft.com/download/pr/5d89a010-88bf-4e4e-ac12-a07258ddbf5f/1ff5dfe312c5bd9760f3b500b1b37597/windowsdesktop-runtime-3.1.12-win-x86.exe?> | ||
12 | <?define DotNetCoreRedistLink = https://download.visualstudio.microsoft.com/download/pr/cbdd1603-7fa9-4957-8869-94e24963ba6c/ca0b7d1be494882d5a7433accfa3c94c/dotnet-runtime-3.1.12-win-x86.exe?> | ||
13 | |||
14 | <Fragment> | ||
15 | <util:DirectorySearchRef Id="$(var.AspNetCoreId)" /> | ||
16 | |||
17 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition" Value="$(var.AspNetCoreId)" Overridable="yes" /> | ||
18 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition" Value="" Overridable="yes" /> | ||
19 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory" Value="redist\" Overridable="yes" /> | ||
20 | <WixVariable Id="AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | ||
21 | |||
22 | <PackageGroup Id="$(var.AspNetCoreRedistId)"> | ||
23 | <ExePackage InstallArguments="$(var.AspNetCoreRedistInstallArguments)" RepairArguments="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments)" UninstallArguments="$(var.AspNetCoreRedistUninstallArguments)" PerMachine="yes" DetectCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.AspNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.AspNetCoreRedistLog)"> | ||
24 | <ExePackagePayload Name="!(wix.AspNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)aspnetcore-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.AspNetCoreRedistLink)" Description="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Hash="03EE5F6D3B2AF8FFE2A5154BB05E50938E2D36E98D996D9E67A3C349DD0C8B3051D5A9628F48C51E006CEA0B1F4484B4BE51920FE5CA841060B0D2C6A12FD5D2" ProductName="Microsoft ASP.NET Core 3.1.12 - Shared Framework" Size="7841808" Version="3.1.12.21070" /> | ||
25 | </ExePackage> | ||
26 | </PackageGroup> | ||
27 | </Fragment> | ||
28 | |||
29 | <Fragment> | ||
30 | <util:DirectorySearchRef Id="$(var.DesktopNetCoreId)" /> | ||
31 | |||
32 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition" Value="$(var.DesktopNetCoreId)" Overridable="yes" /> | ||
33 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition" Value="" Overridable="yes" /> | ||
34 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory" Value="redist\" Overridable="yes" /> | ||
35 | <WixVariable Id="DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | ||
36 | |||
37 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)"> | ||
38 | <ExePackage InstallArguments="$(var.DesktopNetCoreRedistInstallArguments)" RepairArguments="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments)" UninstallArguments="$(var.DesktopNetCoreRedistUninstallArguments)" PerMachine="yes" DetectCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DesktopNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DesktopNetCoreRedistLog)"> | ||
39 | <ExePackagePayload Name="!(wix.DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)windowsdesktop-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DesktopNetCoreRedistLink)" Description="Microsoft Windows Desktop Runtime - 3.1.12 (x86)" Hash="C211A7F29D9B6FEEFCF0379B153FFBFB815157D3D494CFD7D0D84D619701EEA284BF12502094BCFF2BB2968213190454E7CE0E865FD623E78C2FCDAEBEF963DA" ProductName="Microsoft Windows Desktop Runtime - 3.1.12 (x86)" Size="48590696" Version="3.1.12.29719" /> | ||
40 | </ExePackage> | ||
41 | </PackageGroup> | ||
42 | </Fragment> | ||
43 | |||
44 | <Fragment> | ||
45 | <util:DirectorySearchRef Id="$(var.DotNetCoreId)" /> | ||
46 | |||
47 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition" Value="$(var.DotNetCoreId)" Overridable="yes" /> | ||
48 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition" Value="" Overridable="yes" /> | ||
49 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory" Value="redist\" Overridable="yes" /> | ||
50 | <WixVariable Id="DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments" Value="" Overridable="yes" /> | ||
51 | |||
52 | <PackageGroup Id="$(var.DotNetCoreRedistId)"> | ||
53 | <ExePackage InstallArguments="$(var.DotNetCoreRedistInstallArguments)" RepairArguments="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)RepairArguments)" UninstallArguments="$(var.DotNetCoreRedistUninstallArguments)" PerMachine="yes" DetectCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)DetectCondition)" InstallCondition="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)InstallCondition)" Id="$(var.DotNetCoreRedistId)" Vital="yes" Permanent="yes" Protocol="burn" LogPathVariable="$(var.DotNetCoreRedistLog)"> | ||
54 | <ExePackagePayload Name="!(wix.DotNetCoreRuntime$(var.NetCoreIdVersion)Redist$(var.NetCorePlatform)PackageDirectory)dotnet-runtime-$(var.NetCoreVersion)-win-$(var.NetCorePlatform).exe" DownloadUrl="$(var.DotNetCoreRedistLink)" Description="Microsoft .NET Core Runtime - 3.1.12 (x86)" Hash="BA18F9028B19630D91017BEACCD8D79388125C228A83B5A62306108F3BB283617A7ED9B98785BC73192EC00E5D186DA767E940DCAB388699FAF274E437D0C16F" ProductName="Microsoft .NET Core Runtime - 3.1.12 (x86)" Size="23392184" Version="3.1.12.29719" /> | ||
55 | </ExePackage> | ||
56 | </PackageGroup> | ||
57 | </Fragment> | ||
58 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetCore3.1_x64.wxs b/src/ext/NetFx/wixlib/NetCore3.1_x64.wxs new file mode 100644 index 00000000..60d7c27f --- /dev/null +++ b/src/ext/NetFx/wixlib/NetCore3.1_x64.wxs | |||
@@ -0,0 +1,22 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
4 | |||
5 | <Fragment> | ||
6 | <PackageGroup Id="AspNetCoreRuntime31Redist_x64"> | ||
7 | <PackageGroupRef Id="AspNetCoreRuntime3112Redist_x64" /> | ||
8 | </PackageGroup> | ||
9 | </Fragment> | ||
10 | |||
11 | <Fragment> | ||
12 | <PackageGroup Id="DesktopNetCoreRuntime31Redist_x64"> | ||
13 | <PackageGroupRef Id="DesktopNetCoreRuntime3112Redist_x64" /> | ||
14 | </PackageGroup> | ||
15 | </Fragment> | ||
16 | |||
17 | <Fragment> | ||
18 | <PackageGroup Id="DotNetCoreRuntime31Redist_x64"> | ||
19 | <PackageGroupRef Id="DotNetCoreRuntime3112Redist_x64" /> | ||
20 | </PackageGroup> | ||
21 | </Fragment> | ||
22 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetCore3.1_x86.wxs b/src/ext/NetFx/wixlib/NetCore3.1_x86.wxs new file mode 100644 index 00000000..cfff07b3 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetCore3.1_x86.wxs | |||
@@ -0,0 +1,22 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
4 | |||
5 | <Fragment> | ||
6 | <PackageGroup Id="AspNetCoreRuntime31Redist_x86"> | ||
7 | <PackageGroupRef Id="AspNetCoreRuntime3112Redist_x86" /> | ||
8 | </PackageGroup> | ||
9 | </Fragment> | ||
10 | |||
11 | <Fragment> | ||
12 | <PackageGroup Id="DesktopNetCoreRuntime31Redist_x86"> | ||
13 | <PackageGroupRef Id="DesktopNetCoreRuntime3112Redist_x86" /> | ||
14 | </PackageGroup> | ||
15 | </Fragment> | ||
16 | |||
17 | <Fragment> | ||
18 | <PackageGroup Id="DotNetCoreRuntime31Redist_x86"> | ||
19 | <PackageGroupRef Id="DotNetCoreRuntime3112Redist_x86" /> | ||
20 | </PackageGroup> | ||
21 | </Fragment> | ||
22 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetCore3_Platform.wxi b/src/ext/NetFx/wixlib/NetCore3_Platform.wxi new file mode 100644 index 00000000..c7aaca50 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetCore3_Platform.wxi | |||
@@ -0,0 +1,65 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Include xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
5 | |||
6 | <?define AspNetCoreId = ASPNETCORERUNTIME$(var.NetCoreIdVersion)_$(var.NetCorePlatform)?> | ||
7 | <?define AspNetCoreRedistId = AspNetCoreRuntime$(var.NetCoreIdVersion)Redist_$(var.NetCorePlatform)?> | ||
8 | <?define AspNetCoreRedistLog = AspNetCoreRuntime$(var.NetCoreIdVersion)RedistLog?> | ||
9 | <?define AspNetCoreRedistInstallArguments = /install /quiet /norestart /log "[$(var.AspNetCoreRedistLog)]"?> | ||
10 | <?define AspNetCoreRedistUninstallArguments = /uninstall /quiet /norestart /log "[$(var.AspNetCoreRedistLog)]"?> | ||
11 | |||
12 | <?define DesktopNetCoreId = DESKTOPNETCORERUNTIME$(var.NetCoreIdVersion)_$(var.NetCorePlatform)?> | ||
13 | <?define DesktopNetCoreRedistId = DesktopNetCoreRuntime$(var.NetCoreIdVersion)Redist_$(var.NetCorePlatform)?> | ||
14 | <?define DesktopNetCoreRedistLog = DesktopNetCoreRuntime$(var.NetCoreIdVersion)RedistLog?> | ||
15 | <?define DesktopNetCoreRedistInstallArguments = /install /quiet /norestart /log "[$(var.DesktopNetCoreRedistLog)]"?> | ||
16 | <?define DesktopNetCoreRedistUninstallArguments = /uninstall /quiet /norestart /log "[$(var.DesktopNetCoreRedistLog)]"?> | ||
17 | |||
18 | <?define DotNetCoreId = DOTNETCORERUNTIME$(var.NetCoreIdVersion)_$(var.NetCorePlatform)?> | ||
19 | <?define DotNetCoreRedistId = DotNetCoreRuntime$(var.NetCoreIdVersion)Redist_$(var.NetCorePlatform)?> | ||
20 | <?define DotNetCoreRedistLog = DotNetCoreRuntime$(var.NetCoreIdVersion)RedistLog?> | ||
21 | <?define DotNetCoreRedistInstallArguments = /install /quiet /norestart /log "[$(var.DotNetCoreRedistLog)]"?> | ||
22 | <?define DotNetCoreRedistUninstallArguments = /uninstall /quiet /norestart /log "[$(var.DotNetCoreRedistLog)]"?> | ||
23 | |||
24 | <?define DotNetHomeId = DOTNETHOME_$(var.NetCorePlatform)?> | ||
25 | <?define NetCoreEulaLink = https://go.microsoft.com/fwlink/?LinkId=329770?> | ||
26 | |||
27 | <Fragment> | ||
28 | <util:RegistrySearchRef Id="$(var.DotNetHomeId)" /> | ||
29 | <util:DirectorySearch Id="$(var.AspNetCoreId)" Variable="$(var.AspNetCoreId)" Path="[$(var.DotNetHomeId)]\shared\Microsoft.AspNetCore.App\$(var.NetCoreVersion)" Result="exists" After="$(var.DotNetHomeId)" /> | ||
30 | </Fragment> | ||
31 | |||
32 | <Fragment> | ||
33 | <util:RegistrySearchRef Id="$(var.DotNetHomeId)" /> | ||
34 | <util:DirectorySearch Id="$(var.DesktopNetCoreId)" Variable="$(var.DesktopNetCoreId)" Path="[$(var.DotNetHomeId)]\shared\Microsoft.WindowsDesktop.App\$(var.NetCoreVersion)" Result="exists" After="$(var.DotNetHomeId)" /> | ||
35 | </Fragment> | ||
36 | |||
37 | <Fragment> | ||
38 | <util:RegistrySearchRef Id="$(var.DotNetHomeId)" /> | ||
39 | <util:DirectorySearch Id="$(var.DotNetCoreId)" Variable="$(var.DotNetCoreId)" Path="[$(var.DotNetHomeId)]\shared\Microsoft.NETCore.App\$(var.NetCoreVersion)" Result="exists" After="$(var.DotNetHomeId)" /> | ||
40 | </Fragment> | ||
41 | |||
42 | <Fragment> | ||
43 | <PackageGroup Id="$(var.AspNetCoreRedistId)AsPrereq"> | ||
44 | <PackageGroupRef Id="$(var.AspNetCoreRedistId)" /> | ||
45 | </PackageGroup> | ||
46 | |||
47 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.AspNetCoreRedistId)" LicenseUrl="$(var.NetCoreEulaLink)" /> | ||
48 | </Fragment> | ||
49 | |||
50 | <Fragment> | ||
51 | <PackageGroup Id="$(var.DesktopNetCoreRedistId)AsPrereq"> | ||
52 | <PackageGroupRef Id="$(var.DesktopNetCoreRedistId)" /> | ||
53 | </PackageGroup> | ||
54 | |||
55 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.DesktopNetCoreRedistId)" LicenseUrl="$(var.NetCoreEulaLink)" /> | ||
56 | </Fragment> | ||
57 | |||
58 | <Fragment> | ||
59 | <PackageGroup Id="$(var.DotNetCoreRedistId)AsPrereq"> | ||
60 | <PackageGroupRef Id="$(var.DotNetCoreRedistId)" /> | ||
61 | </PackageGroup> | ||
62 | |||
63 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.DotNetCoreRedistId)" LicenseUrl="$(var.NetCoreEulaLink)" /> | ||
64 | </Fragment> | ||
65 | </Include> | ||
diff --git a/src/ext/NetFx/wixlib/NetCoreShared.wxs b/src/ext/NetFx/wixlib/NetCoreShared.wxs new file mode 100644 index 00000000..0332041a --- /dev/null +++ b/src/ext/NetFx/wixlib/NetCoreShared.wxs | |||
@@ -0,0 +1,11 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
5 | |||
6 | <?foreach PLATFORM in x86;x64?> | ||
7 | <Fragment> | ||
8 | <util:RegistrySearch Id="DOTNETHOME_$(var.PLATFORM)" Variable="DOTNETHOME_$(var.PLATFORM)" Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\$(var.PLATFORM)" Value="InstallLocation" Result="value" Bitness="always32" /> | ||
9 | </Fragment> | ||
10 | <?endforeach?> | ||
11 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx1.1.wxs b/src/ext/NetFx/wixlib/NetFx1.1.wxs new file mode 100644 index 00000000..12f0a4e3 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx1.1.wxs | |||
@@ -0,0 +1,191 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 1.1 - http://msdn.microsoft.com/library/ms994339.aspx | ||
12 | --> | ||
13 | |||
14 | <!-- set to #1 if the .NET Framework 1.1 is installed (not set otherwise) --> | ||
15 | <Fragment> | ||
16 | <Property Id="NETFRAMEWORK11" Secure="yes"> | ||
17 | <RegistrySearch Id="NetFramework11" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322" Name="Install" Type="raw" /> | ||
18 | </Property> | ||
19 | </Fragment> | ||
20 | |||
21 | <!-- Indicates the service pack level for the .NET Framework 1.1. --> | ||
22 | <Fragment> | ||
23 | <Property Id="NETFRAMEWORK11_SP_LEVEL" Secure="yes"> | ||
24 | <RegistrySearch Id="NetFramework11SP" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322" Name="SP" Type="raw" /> | ||
25 | </Property> | ||
26 | </Fragment> | ||
27 | |||
28 | <!-- Location of .NET Framework 1.1 redistributable install root directory --> | ||
29 | <Fragment> | ||
30 | <Property Id="NETFRAMEWORK11INSTALLROOTDIR" Secure="yes"> | ||
31 | <RegistrySearch Id="NetFxInstallRootForNetfx11Search" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot"> | ||
32 | <DirectorySearch Id="NetFx11InstallRootSearch" Path="v1.1.4322" Depth="0" /> | ||
33 | </RegistrySearch> | ||
34 | </Property> | ||
35 | </Fragment> | ||
36 | |||
37 | <!-- set to #1 if the .NET Framework 1.1 Chinese (Simplified) language pack is installed (not set otherwise) --> | ||
38 | <Fragment> | ||
39 | <Property Id="NETFRAMEWORK11_ZH_CN_LANGPACK" Secure="yes"> | ||
40 | <RegistrySearch Id="NetFramework11ZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\2052" Name="Install" Type="raw" /> | ||
41 | </Property> | ||
42 | </Fragment> | ||
43 | |||
44 | <!-- set to #1 if the .NET Framework 1.1 Chinese (Traditional) language pack is installed (not set otherwise) --> | ||
45 | <Fragment> | ||
46 | <Property Id="NETFRAMEWORK11_ZH_TW_LANGPACK" Secure="yes"> | ||
47 | <RegistrySearch Id="NetFramework11ZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1028" Name="Install" Type="raw" /> | ||
48 | </Property> | ||
49 | </Fragment> | ||
50 | |||
51 | <!-- set to #1 if the .NET Framework 1.1 Czech language pack is installed (not set otherwise) --> | ||
52 | <Fragment> | ||
53 | <Property Id="NETFRAMEWORK11_CS_CZ_LANGPACK" Secure="yes"> | ||
54 | <RegistrySearch Id="NetFramework11CsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1029" Name="Install" Type="raw" /> | ||
55 | </Property> | ||
56 | </Fragment> | ||
57 | |||
58 | <!-- set to #1 if the .NET Framework 1.1 Danish language pack is installed (not set otherwise) --> | ||
59 | <Fragment> | ||
60 | <Property Id="NETFRAMEWORK11_DA_DK_LANGPACK" Secure="yes"> | ||
61 | <RegistrySearch Id="NetFramework11DaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1030" Name="Install" Type="raw" /> | ||
62 | </Property> | ||
63 | </Fragment> | ||
64 | |||
65 | <!-- set to #1 if the .NET Framework 1.1 Dutch language pack is installed (not set otherwise) --> | ||
66 | <Fragment> | ||
67 | <Property Id="NETFRAMEWORK11_NL_NL_LANGPACK" Secure="yes"> | ||
68 | <RegistrySearch Id="NetFramework11NlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1043" Name="Install" Type="raw" /> | ||
69 | </Property> | ||
70 | </Fragment> | ||
71 | |||
72 | <!-- set to #1 if the .NET Framework 1.1 Finnish language pack is installed (not set otherwise) --> | ||
73 | <Fragment> | ||
74 | <Property Id="NETFRAMEWORK11_FI_FI_LANGPACK" Secure="yes"> | ||
75 | <RegistrySearch Id="NetFramework11FiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1035" Name="Install" Type="raw" /> | ||
76 | </Property> | ||
77 | </Fragment> | ||
78 | |||
79 | <!-- set to #1 if the .NET Framework 1.1 French language pack is installed (not set otherwise) --> | ||
80 | <Fragment> | ||
81 | <Property Id="NETFRAMEWORK11_FR_FR_LANGPACK" Secure="yes"> | ||
82 | <RegistrySearch Id="NetFramework11FrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1036" Name="Install" Type="raw" /> | ||
83 | </Property> | ||
84 | </Fragment> | ||
85 | |||
86 | <!-- set to #1 if the .NET Framework 1.1 German language pack is installed (not set otherwise) --> | ||
87 | <Fragment> | ||
88 | <Property Id="NETFRAMEWORK11_DE_DE_LANGPACK" Secure="yes"> | ||
89 | <RegistrySearch Id="NetFramework11DeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1031" Name="Install" Type="raw" /> | ||
90 | </Property> | ||
91 | </Fragment> | ||
92 | |||
93 | <!-- set to #1 if the .NET Framework 1.1 Greek language pack is installed (not set otherwise) --> | ||
94 | <Fragment> | ||
95 | <Property Id="NETFRAMEWORK11_EL_GR_LANGPACK" Secure="yes"> | ||
96 | <RegistrySearch Id="NetFramework11ElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1032" Name="Install" Type="raw" /> | ||
97 | </Property> | ||
98 | </Fragment> | ||
99 | |||
100 | <!-- set to #1 if the .NET Framework 1.1 Hungarian language pack is installed (not set otherwise) --> | ||
101 | <Fragment> | ||
102 | <Property Id="NETFRAMEWORK11_HU_HU_LANGPACK" Secure="yes"> | ||
103 | <RegistrySearch Id="NetFramework11HuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1038" Name="Install" Type="raw" /> | ||
104 | </Property> | ||
105 | </Fragment> | ||
106 | |||
107 | <!-- set to #1 if the .NET Framework 1.1 Italian language pack is installed (not set otherwise) --> | ||
108 | <Fragment> | ||
109 | <Property Id="NETFRAMEWORK11_IT_IT_LANGPACK" Secure="yes"> | ||
110 | <RegistrySearch Id="NetFramework11ItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1040" Name="Install" Type="raw" /> | ||
111 | </Property> | ||
112 | </Fragment> | ||
113 | |||
114 | <!-- set to #1 if the .NET Framework 1.1 Japanese language pack is installed (not set otherwise) --> | ||
115 | <Fragment> | ||
116 | <Property Id="NETFRAMEWORK11_JA_JP_LANGPACK" Secure="yes"> | ||
117 | <RegistrySearch Id="NetFramework11JaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1041" Name="Install" Type="raw" /> | ||
118 | </Property> | ||
119 | </Fragment> | ||
120 | |||
121 | <!-- set to #1 if the .NET Framework 1.1 Korean language pack is installed (not set otherwise) --> | ||
122 | <Fragment> | ||
123 | <Property Id="NETFRAMEWORK11_KO_KR_LANGPACK" Secure="yes"> | ||
124 | <RegistrySearch Id="NetFramework11KoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1042" Name="Install" Type="raw" /> | ||
125 | </Property> | ||
126 | </Fragment> | ||
127 | |||
128 | <!-- set to #1 if the .NET Framework 1.1 Norwegian language pack is installed (not set otherwise) --> | ||
129 | <Fragment> | ||
130 | <Property Id="NETFRAMEWORK11_NB_NO_LANGPACK" Secure="yes"> | ||
131 | <RegistrySearch Id="NetFramework11NbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1044" Name="Install" Type="raw" /> | ||
132 | </Property> | ||
133 | </Fragment> | ||
134 | |||
135 | <!-- set to #1 if the .NET Framework 1.1 Polish language pack is installed (not set otherwise) --> | ||
136 | <Fragment> | ||
137 | <Property Id="NETFRAMEWORK11_PL_PL_LANGPACK" Secure="yes"> | ||
138 | <RegistrySearch Id="NetFramework11PlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1045" Name="Install" Type="raw" /> | ||
139 | </Property> | ||
140 | </Fragment> | ||
141 | |||
142 | <!-- set to #1 if the .NET Framework 1.1 Portuguese (Brazil) language pack is installed (not set otherwise) --> | ||
143 | <Fragment> | ||
144 | <Property Id="NETFRAMEWORK11_PT_BR_LANGPACK" Secure="yes"> | ||
145 | <RegistrySearch Id="NetFramework11PtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1046" Name="Install" Type="raw" /> | ||
146 | </Property> | ||
147 | </Fragment> | ||
148 | |||
149 | <!-- set to #1 if the .NET Framework 1.1 Portuguese (Portugal) language pack is installed (not set otherwise) --> | ||
150 | <Fragment> | ||
151 | <Property Id="NETFRAMEWORK11_PT_PT_LANGPACK" Secure="yes"> | ||
152 | <RegistrySearch Id="NetFramework11PtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\2070" Name="Install" Type="raw" /> | ||
153 | </Property> | ||
154 | </Fragment> | ||
155 | |||
156 | <!-- set to #1 if the .NET Framework 1.1 Russian language pack is installed (not set otherwise) --> | ||
157 | <Fragment> | ||
158 | <Property Id="NETFRAMEWORK11_RU_RU_LANGPACK" Secure="yes"> | ||
159 | <RegistrySearch Id="NetFramework11RuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1049" Name="Install" Type="raw" /> | ||
160 | </Property> | ||
161 | </Fragment> | ||
162 | |||
163 | <!-- set to #1 if the .NET Framework 1.1 Spanish language pack is installed (not set otherwise) --> | ||
164 | <Fragment> | ||
165 | <Property Id="NETFRAMEWORK11_ES_ES_LANGPACK" Secure="yes"> | ||
166 | <RegistrySearch Id="NetFramework11EsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\3082" Name="Install" Type="raw" /> | ||
167 | </Property> | ||
168 | </Fragment> | ||
169 | |||
170 | <!-- set to #1 if the .NET Framework 1.1 Swedish language pack is installed (not set otherwise) --> | ||
171 | <Fragment> | ||
172 | <Property Id="NETFRAMEWORK11_SV_SE_LANGPACK" Secure="yes"> | ||
173 | <RegistrySearch Id="NetFramework11SvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1053" Name="Install" Type="raw" /> | ||
174 | </Property> | ||
175 | </Fragment> | ||
176 | |||
177 | <!-- set to #1 if the .NET Framework 1.1 Turkish language pack is installed (not set otherwise) --> | ||
178 | <Fragment> | ||
179 | <Property Id="NETFRAMEWORK11_TR_TR_LANGPACK" Secure="yes"> | ||
180 | <RegistrySearch Id="NetFramework11TrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\1055" Name="Install" Type="raw" /> | ||
181 | </Property> | ||
182 | </Fragment> | ||
183 | |||
184 | <!-- location of the .NET Framework 1.1 SDK installation root --> | ||
185 | <Fragment> | ||
186 | <Property Id="NETFRAMEWORK11SDKDIR" Secure="yes"> | ||
187 | <RegistrySearch Id="NetFramework11SDKDir" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="sdkInstallRootv1.1" Type="raw" /> | ||
188 | </Property> | ||
189 | </Fragment> | ||
190 | |||
191 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx1.wxs b/src/ext/NetFx/wixlib/NetFx1.wxs new file mode 100644 index 00000000..68d6f13d --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx1.wxs | |||
@@ -0,0 +1,30 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 1.0 - http://msdn.microsoft.com/library/ms994349.aspx | ||
12 | --> | ||
13 | |||
14 | <!-- set to 3321-3705 if the .NET Framework 1.0 is installed (not set otherwise) --> | ||
15 | <Fragment> | ||
16 | <Property Id="NETFRAMEWORK10" Secure="yes"> | ||
17 | <RegistrySearch Id="NetFramework10" Root="HKLM" Key="SOFTWARE\Microsoft\.NETFramework\policy\v1.0" Name="3705" Type="raw" /> | ||
18 | </Property> | ||
19 | </Fragment> | ||
20 | |||
21 | <!-- Location of .NET Framework 1.0 redistributable install root directory --> | ||
22 | <Fragment> | ||
23 | <Property Id="NETFRAMEWORK10INSTALLROOTDIR" Secure="yes"> | ||
24 | <RegistrySearch Id="NetFxInstallRootForNetfx10Search" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot"> | ||
25 | <DirectorySearch Id="NetFx10InstallRootSearch" Path="v1.0.3705" Depth="0" /> | ||
26 | </RegistrySearch> | ||
27 | </Property> | ||
28 | </Fragment> | ||
29 | |||
30 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx2.wxs b/src/ext/NetFx/wixlib/NetFx2.wxs new file mode 100644 index 00000000..e5eef54b --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx2.wxs | |||
@@ -0,0 +1,200 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 2.0 - http://msdn.microsoft.com/library/aa480243.aspx | ||
12 | --> | ||
13 | |||
14 | <!-- set to #1 if the .NET Framework 2.0 is installed (not set otherwise) --> | ||
15 | <Fragment> | ||
16 | <Property Id="NETFRAMEWORK20" Secure="yes"> | ||
17 | <RegistrySearch Id="NetFramework20" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727" Name="Install" Type="raw" /> | ||
18 | </Property> | ||
19 | </Fragment> | ||
20 | |||
21 | <!-- Indicates the service pack level for the .NET Framework 2.0. --> | ||
22 | <Fragment> | ||
23 | <Property Id="NETFRAMEWORK20_SP_LEVEL" Secure="yes"> | ||
24 | <RegistrySearch Id="NetFramework20SP" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727" Name="SP" Type="raw" /> | ||
25 | </Property> | ||
26 | </Fragment> | ||
27 | |||
28 | <!-- Location of .NET Framework 2.0 redistributable install root directory --> | ||
29 | <Fragment> | ||
30 | <Property Id="NETFRAMEWORK20INSTALLROOTDIR" Secure="yes"> | ||
31 | <RegistrySearch Id="NetFxInstallRootForNetfx20Search" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot"> | ||
32 | <DirectorySearch Id="NetFx20InstallRootSearch" Path="v2.0.50727" Depth="0" /> | ||
33 | </RegistrySearch> | ||
34 | </Property> | ||
35 | </Fragment> | ||
36 | |||
37 | <!-- Location of .NET Framework 2.0 (64-bit) redistributable install root directory --> | ||
38 | <Fragment> | ||
39 | <Property Id="NETFRAMEWORK20INSTALLROOTDIR64" Secure="yes"> | ||
40 | <RegistrySearch Id="NetFxInstallRootForNetfx20Search64" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot" Bitness="always64"> | ||
41 | <DirectorySearch Id="NetFx20InstallRootSearch64" Path="v2.0.50727" Depth="0" /> | ||
42 | </RegistrySearch> | ||
43 | </Property> | ||
44 | </Fragment> | ||
45 | |||
46 | <!-- set to #1 if the .NET Framework 2.0 Chinese (Simplified) language pack is installed (not set otherwise) --> | ||
47 | <Fragment> | ||
48 | <Property Id="NETFRAMEWORK20_ZH_CN_LANGPACK" Secure="yes"> | ||
49 | <RegistrySearch Id="NETFRAMEWORK20ZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\2052" Name="Install" Type="raw" /> | ||
50 | </Property> | ||
51 | </Fragment> | ||
52 | |||
53 | <!-- set to #1 if the .NET Framework 2.0 Chinese (Traditional) language pack is installed (not set otherwise) --> | ||
54 | <Fragment> | ||
55 | <Property Id="NETFRAMEWORK20_ZH_TW_LANGPACK" Secure="yes"> | ||
56 | <RegistrySearch Id="NETFRAMEWORK20ZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1028" Name="Install" Type="raw" /> | ||
57 | </Property> | ||
58 | </Fragment> | ||
59 | |||
60 | <!-- set to #1 if the .NET Framework 2.0 Czech language pack is installed (not set otherwise) --> | ||
61 | <Fragment> | ||
62 | <Property Id="NETFRAMEWORK20_CS_CZ_LANGPACK" Secure="yes"> | ||
63 | <RegistrySearch Id="NETFRAMEWORK20CsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1029" Name="Install" Type="raw" /> | ||
64 | </Property> | ||
65 | </Fragment> | ||
66 | |||
67 | <!-- set to #1 if the .NET Framework 2.0 Danish language pack is installed (not set otherwise) --> | ||
68 | <Fragment> | ||
69 | <Property Id="NETFRAMEWORK20_DA_DK_LANGPACK" Secure="yes"> | ||
70 | <RegistrySearch Id="NETFRAMEWORK20DaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1030" Name="Install" Type="raw" /> | ||
71 | </Property> | ||
72 | </Fragment> | ||
73 | |||
74 | <!-- set to #1 if the .NET Framework 2.0 Dutch language pack is installed (not set otherwise) --> | ||
75 | <Fragment> | ||
76 | <Property Id="NETFRAMEWORK20_NL_NL_LANGPACK" Secure="yes"> | ||
77 | <RegistrySearch Id="NETFRAMEWORK20NlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1043" Name="Install" Type="raw" /> | ||
78 | </Property> | ||
79 | </Fragment> | ||
80 | |||
81 | <!-- set to #1 if the .NET Framework 2.0 Finnish language pack is installed (not set otherwise) --> | ||
82 | <Fragment> | ||
83 | <Property Id="NETFRAMEWORK20_FI_FI_LANGPACK" Secure="yes"> | ||
84 | <RegistrySearch Id="NETFRAMEWORK20FiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1035" Name="Install" Type="raw" /> | ||
85 | </Property> | ||
86 | </Fragment> | ||
87 | |||
88 | <!-- set to #1 if the .NET Framework 2.0 French language pack is installed (not set otherwise) --> | ||
89 | <Fragment> | ||
90 | <Property Id="NETFRAMEWORK20_FR_FR_LANGPACK" Secure="yes"> | ||
91 | <RegistrySearch Id="NETFRAMEWORK20FrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1036" Name="Install" Type="raw" /> | ||
92 | </Property> | ||
93 | </Fragment> | ||
94 | |||
95 | <!-- set to #1 if the .NET Framework 2.0 German language pack is installed (not set otherwise) --> | ||
96 | <Fragment> | ||
97 | <Property Id="NETFRAMEWORK20_DE_DE_LANGPACK" Secure="yes"> | ||
98 | <RegistrySearch Id="NETFRAMEWORK20DeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1031" Name="Install" Type="raw" /> | ||
99 | </Property> | ||
100 | </Fragment> | ||
101 | |||
102 | <!-- set to #1 if the .NET Framework 2.0 Greek language pack is installed (not set otherwise) --> | ||
103 | <Fragment> | ||
104 | <Property Id="NETFRAMEWORK20_EL_GR_LANGPACK" Secure="yes"> | ||
105 | <RegistrySearch Id="NETFRAMEWORK20ElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1032" Name="Install" Type="raw" /> | ||
106 | </Property> | ||
107 | </Fragment> | ||
108 | |||
109 | <!-- set to #1 if the .NET Framework 2.0 Hungarian language pack is installed (not set otherwise) --> | ||
110 | <Fragment> | ||
111 | <Property Id="NETFRAMEWORK20_HU_HU_LANGPACK" Secure="yes"> | ||
112 | <RegistrySearch Id="NETFRAMEWORK20HuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1038" Name="Install" Type="raw" /> | ||
113 | </Property> | ||
114 | </Fragment> | ||
115 | |||
116 | <!-- set to #1 if the .NET Framework 2.0 Italian language pack is installed (not set otherwise) --> | ||
117 | <Fragment> | ||
118 | <Property Id="NETFRAMEWORK20_IT_IT_LANGPACK" Secure="yes"> | ||
119 | <RegistrySearch Id="NETFRAMEWORK20ItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1040" Name="Install" Type="raw" /> | ||
120 | </Property> | ||
121 | </Fragment> | ||
122 | |||
123 | <!-- set to #1 if the .NET Framework 2.0 Japanese language pack is installed (not set otherwise) --> | ||
124 | <Fragment> | ||
125 | <Property Id="NETFRAMEWORK20_JA_JP_LANGPACK" Secure="yes"> | ||
126 | <RegistrySearch Id="NETFRAMEWORK20JaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1041" Name="Install" Type="raw" /> | ||
127 | </Property> | ||
128 | </Fragment> | ||
129 | |||
130 | <!-- set to #1 if the .NET Framework 2.0 Korean language pack is installed (not set otherwise) --> | ||
131 | <Fragment> | ||
132 | <Property Id="NETFRAMEWORK20_KO_KR_LANGPACK" Secure="yes"> | ||
133 | <RegistrySearch Id="NETFRAMEWORK20KoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1042" Name="Install" Type="raw" /> | ||
134 | </Property> | ||
135 | </Fragment> | ||
136 | |||
137 | <!-- set to #1 if the .NET Framework 2.0 Norwegian language pack is installed (not set otherwise) --> | ||
138 | <Fragment> | ||
139 | <Property Id="NETFRAMEWORK20_NB_NO_LANGPACK" Secure="yes"> | ||
140 | <RegistrySearch Id="NETFRAMEWORK20NbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1044" Name="Install" Type="raw" /> | ||
141 | </Property> | ||
142 | </Fragment> | ||
143 | |||
144 | <!-- set to #1 if the .NET Framework 2.0 Polish language pack is installed (not set otherwise) --> | ||
145 | <Fragment> | ||
146 | <Property Id="NETFRAMEWORK20_PL_PL_LANGPACK" Secure="yes"> | ||
147 | <RegistrySearch Id="NETFRAMEWORK20PlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1045" Name="Install" Type="raw" /> | ||
148 | </Property> | ||
149 | </Fragment> | ||
150 | |||
151 | <!-- set to #1 if the .NET Framework 2.0 Portuguese (Brazil) language pack is installed (not set otherwise) --> | ||
152 | <Fragment> | ||
153 | <Property Id="NETFRAMEWORK20_PT_BR_LANGPACK" Secure="yes"> | ||
154 | <RegistrySearch Id="NETFRAMEWORK20PtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1046" Name="Install" Type="raw" /> | ||
155 | </Property> | ||
156 | </Fragment> | ||
157 | |||
158 | <!-- set to #1 if the .NET Framework 2.0 Portuguese (Portugal) language pack is installed (not set otherwise) --> | ||
159 | <Fragment> | ||
160 | <Property Id="NETFRAMEWORK20_PT_PT_LANGPACK" Secure="yes"> | ||
161 | <RegistrySearch Id="NETFRAMEWORK20PtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\2070" Name="Install" Type="raw" /> | ||
162 | </Property> | ||
163 | </Fragment> | ||
164 | |||
165 | <!-- set to #1 if the .NET Framework 2.0 Russian language pack is installed (not set otherwise) --> | ||
166 | <Fragment> | ||
167 | <Property Id="NETFRAMEWORK20_RU_RU_LANGPACK" Secure="yes"> | ||
168 | <RegistrySearch Id="NETFRAMEWORK20RuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1049" Name="Install" Type="raw" /> | ||
169 | </Property> | ||
170 | </Fragment> | ||
171 | |||
172 | <!-- set to #1 if the .NET Framework 2.0 Spanish language pack is installed (not set otherwise) --> | ||
173 | <Fragment> | ||
174 | <Property Id="NETFRAMEWORK20_ES_ES_LANGPACK" Secure="yes"> | ||
175 | <RegistrySearch Id="NETFRAMEWORK20EsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\3082" Name="Install" Type="raw" /> | ||
176 | </Property> | ||
177 | </Fragment> | ||
178 | |||
179 | <!-- set to #1 if the .NET Framework 2.0 Swedish language pack is installed (not set otherwise) --> | ||
180 | <Fragment> | ||
181 | <Property Id="NETFRAMEWORK20_SV_SE_LANGPACK" Secure="yes"> | ||
182 | <RegistrySearch Id="NETFRAMEWORK20SvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1053" Name="Install" Type="raw" /> | ||
183 | </Property> | ||
184 | </Fragment> | ||
185 | |||
186 | <!-- set to #1 if the .NET Framework 2.0 Turkish language pack is installed (not set otherwise) --> | ||
187 | <Fragment> | ||
188 | <Property Id="NETFRAMEWORK20_TR_TR_LANGPACK" Secure="yes"> | ||
189 | <RegistrySearch Id="NETFRAMEWORK20TrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\1055" Name="Install" Type="raw" /> | ||
190 | </Property> | ||
191 | </Fragment> | ||
192 | |||
193 | <!-- location of the .NET Framework 2.0 SDK installation root --> | ||
194 | <Fragment> | ||
195 | <Property Id="NETFRAMEWORK20SDKDIR" Secure="yes"> | ||
196 | <RegistrySearch Id="NetFramework20SDKDir" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="sdkInstallRootv2.0" Type="raw" /> | ||
197 | </Property> | ||
198 | </Fragment> | ||
199 | |||
200 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx3.5.wxs b/src/ext/NetFx/wixlib/NetFx3.5.wxs new file mode 100644 index 00000000..c1a80f50 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx3.5.wxs | |||
@@ -0,0 +1,234 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following locations: | ||
10 | |||
11 | .NET Framework 3.5 - http://msdn.microsoft.com/library/cc160716.aspx | ||
12 | .NET Framework 3.5 client profile - http://download.microsoft.com/download/5/a/a/5aa86d6c-969b-42d8-bc6b-30e02bfeccf0/NETFXClientProfile_DeploymentGuide.htm | ||
13 | --> | ||
14 | |||
15 | <!-- Indicates the service pack level for the .NET Framework 3.5 (for bundles). --> | ||
16 | <Fragment> | ||
17 | <util:RegistrySearch Id="NETFRAMEWORK35_SP_LEVEL" Variable="NETFRAMEWORK35_SP_LEVEL" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5" Value="SP" Result="value" /> | ||
18 | </Fragment> | ||
19 | |||
20 | <!-- set to #1 if the .NET Framework 3.5 is installed (not set otherwise) --> | ||
21 | <Fragment> | ||
22 | <Property Id="NETFRAMEWORK35" Secure="yes"> | ||
23 | <RegistrySearch Id="NetFramework35" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" Name="Install" Type="raw" /> | ||
24 | </Property> | ||
25 | </Fragment> | ||
26 | |||
27 | <!-- Indicates the service pack level for the .NET Framework 3.5. --> | ||
28 | <Fragment> | ||
29 | <Property Id="NETFRAMEWORK35_SP_LEVEL" Secure="yes"> | ||
30 | <RegistrySearch Id="NetFramework35SP" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5" Name="SP" Type="raw" /> | ||
31 | </Property> | ||
32 | </Fragment> | ||
33 | |||
34 | <!-- Location of .NET Framework 3.5 redistributable install root directory --> | ||
35 | <Fragment> | ||
36 | <Property Id="NETFRAMEWORK35INSTALLROOTDIR" Secure="yes"> | ||
37 | <RegistrySearch Id="NetFxInstallRootForNetfx35Search" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot"> | ||
38 | <DirectorySearch Id="NetFx35InstallRootSearch" Path="v3.5" Depth="0" /> | ||
39 | </RegistrySearch> | ||
40 | </Property> | ||
41 | </Fragment> | ||
42 | |||
43 | <!-- Location of .NET Framework 3.5 (64-bit) redistributable install root directory --> | ||
44 | <Fragment> | ||
45 | <Property Id="NETFRAMEWORK35INSTALLROOTDIR64" Secure="yes"> | ||
46 | <RegistrySearch Id="NetFxInstallRootForNetfx35Search64" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot" Bitness="always64"> | ||
47 | <DirectorySearch Id="NetFx35InstallRootSearch64" Path="v3.5" Depth="0" /> | ||
48 | </RegistrySearch> | ||
49 | </Property> | ||
50 | </Fragment> | ||
51 | |||
52 | <!-- set to #1 if the .NET Framework 3.5 Chinese (Simplified) language pack is installed (not set otherwise) --> | ||
53 | <Fragment> | ||
54 | <Property Id="NETFRAMEWORK35_ZH_CN_LANGPACK" Secure="yes"> | ||
55 | <RegistrySearch Id="NETFRAMEWORK35ZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\2052" Name="Install" Type="raw" /> | ||
56 | </Property> | ||
57 | </Fragment> | ||
58 | |||
59 | <!-- set to #1 if the .NET Framework 3.5 Chinese (Traditional) language pack is installed (not set otherwise) --> | ||
60 | <Fragment> | ||
61 | <Property Id="NETFRAMEWORK35_ZH_TW_LANGPACK" Secure="yes"> | ||
62 | <RegistrySearch Id="NETFRAMEWORK35ZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1028" Name="Install" Type="raw" /> | ||
63 | </Property> | ||
64 | </Fragment> | ||
65 | |||
66 | <!-- set to #1 if the .NET Framework 3.5 Czech language pack is installed (not set otherwise) --> | ||
67 | <Fragment> | ||
68 | <Property Id="NETFRAMEWORK35_CS_CZ_LANGPACK" Secure="yes"> | ||
69 | <RegistrySearch Id="NETFRAMEWORK35CsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1029" Name="Install" Type="raw" /> | ||
70 | </Property> | ||
71 | </Fragment> | ||
72 | |||
73 | <!-- set to #1 if the .NET Framework 3.5 Danish language pack is installed (not set otherwise) --> | ||
74 | <Fragment> | ||
75 | <Property Id="NETFRAMEWORK35_DA_DK_LANGPACK" Secure="yes"> | ||
76 | <RegistrySearch Id="NETFRAMEWORK35DaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1030" Name="Install" Type="raw" /> | ||
77 | </Property> | ||
78 | </Fragment> | ||
79 | |||
80 | <!-- set to #1 if the .NET Framework 3.5 Dutch language pack is installed (not set otherwise) --> | ||
81 | <Fragment> | ||
82 | <Property Id="NETFRAMEWORK35_NL_NL_LANGPACK" Secure="yes"> | ||
83 | <RegistrySearch Id="NETFRAMEWORK35NlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1043" Name="Install" Type="raw" /> | ||
84 | </Property> | ||
85 | </Fragment> | ||
86 | |||
87 | <!-- set to #1 if the .NET Framework 3.5 Finnish language pack is installed (not set otherwise) --> | ||
88 | <Fragment> | ||
89 | <Property Id="NETFRAMEWORK35_FI_FI_LANGPACK" Secure="yes"> | ||
90 | <RegistrySearch Id="NETFRAMEWORK35FiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1035" Name="Install" Type="raw" /> | ||
91 | </Property> | ||
92 | </Fragment> | ||
93 | |||
94 | <!-- set to #1 if the .NET Framework 3.5 French language pack is installed (not set otherwise) --> | ||
95 | <Fragment> | ||
96 | <Property Id="NETFRAMEWORK35_FR_FR_LANGPACK" Secure="yes"> | ||
97 | <RegistrySearch Id="NETFRAMEWORK35FrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1036" Name="Install" Type="raw" /> | ||
98 | </Property> | ||
99 | </Fragment> | ||
100 | |||
101 | <!-- set to #1 if the .NET Framework 3.5 German language pack is installed (not set otherwise) --> | ||
102 | <Fragment> | ||
103 | <Property Id="NETFRAMEWORK35_DE_DE_LANGPACK" Secure="yes"> | ||
104 | <RegistrySearch Id="NETFRAMEWORK35DeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1031" Name="Install" Type="raw" /> | ||
105 | </Property> | ||
106 | </Fragment> | ||
107 | |||
108 | <!-- set to #1 if the .NET Framework 3.5 Greek language pack is installed (not set otherwise) --> | ||
109 | <Fragment> | ||
110 | <Property Id="NETFRAMEWORK35_EL_GR_LANGPACK" Secure="yes"> | ||
111 | <RegistrySearch Id="NETFRAMEWORK35ElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1032" Name="Install" Type="raw" /> | ||
112 | </Property> | ||
113 | </Fragment> | ||
114 | |||
115 | <!-- set to #1 if the .NET Framework 3.5 Hungarian language pack is installed (not set otherwise) --> | ||
116 | <Fragment> | ||
117 | <Property Id="NETFRAMEWORK35_HU_HU_LANGPACK" Secure="yes"> | ||
118 | <RegistrySearch Id="NETFRAMEWORK35HuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1038" Name="Install" Type="raw" /> | ||
119 | </Property> | ||
120 | </Fragment> | ||
121 | |||
122 | <!-- set to #1 if the .NET Framework 3.5 Italian language pack is installed (not set otherwise) --> | ||
123 | <Fragment> | ||
124 | <Property Id="NETFRAMEWORK35_IT_IT_LANGPACK" Secure="yes"> | ||
125 | <RegistrySearch Id="NETFRAMEWORK35ItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1040" Name="Install" Type="raw" /> | ||
126 | </Property> | ||
127 | </Fragment> | ||
128 | |||
129 | <!-- set to #1 if the .NET Framework 3.5 Japanese language pack is installed (not set otherwise) --> | ||
130 | <Fragment> | ||
131 | <Property Id="NETFRAMEWORK35_JA_JP_LANGPACK" Secure="yes"> | ||
132 | <RegistrySearch Id="NETFRAMEWORK35JaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1041" Name="Install" Type="raw" /> | ||
133 | </Property> | ||
134 | </Fragment> | ||
135 | |||
136 | <!-- set to #1 if the .NET Framework 3.5 Korean language pack is installed (not set otherwise) --> | ||
137 | <Fragment> | ||
138 | <Property Id="NETFRAMEWORK35_KO_KR_LANGPACK" Secure="yes"> | ||
139 | <RegistrySearch Id="NETFRAMEWORK35KoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1042" Name="Install" Type="raw" /> | ||
140 | </Property> | ||
141 | </Fragment> | ||
142 | |||
143 | <!-- set to #1 if the .NET Framework 3.5 Norwegian language pack is installed (not set otherwise) --> | ||
144 | <Fragment> | ||
145 | <Property Id="NETFRAMEWORK35_NB_NO_LANGPACK" Secure="yes"> | ||
146 | <RegistrySearch Id="NETFRAMEWORK35NbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1044" Name="Install" Type="raw" /> | ||
147 | </Property> | ||
148 | </Fragment> | ||
149 | |||
150 | <!-- set to #1 if the .NET Framework 3.5 Polish language pack is installed (not set otherwise) --> | ||
151 | <Fragment> | ||
152 | <Property Id="NETFRAMEWORK35_PL_PL_LANGPACK" Secure="yes"> | ||
153 | <RegistrySearch Id="NETFRAMEWORK35PlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1045" Name="Install" Type="raw" /> | ||
154 | </Property> | ||
155 | </Fragment> | ||
156 | |||
157 | <!-- set to #1 if the .NET Framework 3.5 Portuguese (Brazil) language pack is installed (not set otherwise) --> | ||
158 | <Fragment> | ||
159 | <Property Id="NETFRAMEWORK35_PT_BR_LANGPACK" Secure="yes"> | ||
160 | <RegistrySearch Id="NETFRAMEWORK35PtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1046" Name="Install" Type="raw" /> | ||
161 | </Property> | ||
162 | </Fragment> | ||
163 | |||
164 | <!-- set to #1 if the .NET Framework 3.5 Portuguese (Portugal) language pack is installed (not set otherwise) --> | ||
165 | <Fragment> | ||
166 | <Property Id="NETFRAMEWORK35_PT_PT_LANGPACK" Secure="yes"> | ||
167 | <RegistrySearch Id="NETFRAMEWORK35PtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\2070" Name="Install" Type="raw" /> | ||
168 | </Property> | ||
169 | </Fragment> | ||
170 | |||
171 | <!-- set to #1 if the .NET Framework 3.5 Russian language pack is installed (not set otherwise) --> | ||
172 | <Fragment> | ||
173 | <Property Id="NETFRAMEWORK35_RU_RU_LANGPACK" Secure="yes"> | ||
174 | <RegistrySearch Id="NETFRAMEWORK35RuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1049" Name="Install" Type="raw" /> | ||
175 | </Property> | ||
176 | </Fragment> | ||
177 | |||
178 | <!-- set to #1 if the .NET Framework 3.5 Spanish language pack is installed (not set otherwise) --> | ||
179 | <Fragment> | ||
180 | <Property Id="NETFRAMEWORK35_ES_ES_LANGPACK" Secure="yes"> | ||
181 | <RegistrySearch Id="NETFRAMEWORK35EsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\3082" Name="Install" Type="raw" /> | ||
182 | </Property> | ||
183 | </Fragment> | ||
184 | |||
185 | <!-- set to #1 if the .NET Framework 3.5 Swedish language pack is installed (not set otherwise) --> | ||
186 | <Fragment> | ||
187 | <Property Id="NETFRAMEWORK35_SV_SE_LANGPACK" Secure="yes"> | ||
188 | <RegistrySearch Id="NETFRAMEWORK35SvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1053" Name="Install" Type="raw" /> | ||
189 | </Property> | ||
190 | </Fragment> | ||
191 | |||
192 | <!-- set to #1 if the .NET Framework 3.5 Turkish language pack is installed (not set otherwise) --> | ||
193 | <Fragment> | ||
194 | <Property Id="NETFRAMEWORK35_TR_TR_LANGPACK" Secure="yes"> | ||
195 | <RegistrySearch Id="NETFRAMEWORK35TrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.5\1055" Name="Install" Type="raw" /> | ||
196 | </Property> | ||
197 | </Fragment> | ||
198 | |||
199 | <!-- set to #1 if the .NET Framework 3.5 client profile is installed (not set otherwise) --> | ||
200 | <Fragment> | ||
201 | <Property Id="NETFRAMEWORK35_CLIENT" Secure="yes"> | ||
202 | <RegistrySearch Id="NETFRAMEWORK35ClientSearch" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\DotNetClient\v3.5" Name="Install" Type="raw" /> | ||
203 | </Property> | ||
204 | </Fragment> | ||
205 | |||
206 | <!-- Indicates the service pack level for the .NET Framework 3.5 client profile --> | ||
207 | <Fragment> | ||
208 | <Property Id="NETFRAMEWORK35_CLIENT_SP_LEVEL" Secure="yes"> | ||
209 | <RegistrySearch Id="NETFRAMEWORK35ClientSpSearch" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\DotNetClient\v3.5" Name="SP" Type="raw" /> | ||
210 | </Property> | ||
211 | </Fragment> | ||
212 | |||
213 | <!-- location of the Windows SDK 6.0a installation root --> | ||
214 | <Fragment> | ||
215 | <Property Id="WINDOWSSDK60ADIR" Secure="yes"> | ||
216 | <RegistrySearch Id="WindowsSdk60aDir" Root="HKLM" Key="Software\Microsoft\Microsoft SDKs\Windows\v6.0A" Name="InstallationFolder" Type="raw" /> | ||
217 | </Property> | ||
218 | </Fragment> | ||
219 | |||
220 | <!-- location of the Windows SDK 6.1 installation root --> | ||
221 | <Fragment> | ||
222 | <Property Id="WINDOWSSDK61DIR" Secure="yes"> | ||
223 | <RegistrySearch Id="WindowsSdk61Dir" Root="HKLM" Key="Software\Microsoft\Microsoft SDKs\Windows\v6.1" Name="InstallationFolder" Type="raw" /> | ||
224 | </Property> | ||
225 | </Fragment> | ||
226 | |||
227 | <!-- location of the Windows SDK 7.0 installation root --> | ||
228 | <Fragment> | ||
229 | <Property Id="WINDOWSSDK70ADIR" Secure="yes"> | ||
230 | <RegistrySearch Id="WindowsSdk70aDir" Root="HKLM" Key="Software\Microsoft\Microsoft SDKs\Windows\v7.0A" Name="InstallationFolder" Type="raw" /> | ||
231 | </Property> | ||
232 | </Fragment> | ||
233 | |||
234 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx3.wxs b/src/ext/NetFx/wixlib/NetFx3.wxs new file mode 100644 index 00000000..5fb279ea --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx3.wxs | |||
@@ -0,0 +1,194 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 3.0 - http://msdn.microsoft.com/library/aa964979.aspx | ||
12 | --> | ||
13 | |||
14 | <!-- set to #1 if the .NET Framework 3.0 is installed (not set otherwise) --> | ||
15 | <Fragment> | ||
16 | <Property Id="NETFRAMEWORK30" Secure="yes"> | ||
17 | <RegistrySearch Id="NetFramework30" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" Name="InstallSuccess" Type="raw" /> | ||
18 | </Property> | ||
19 | </Fragment> | ||
20 | |||
21 | <!-- Indicates the service pack level for the .NET Framework 3.0. --> | ||
22 | <!-- This value will not exist until a service pack is installed. --> | ||
23 | <Fragment> | ||
24 | <Property Id="NETFRAMEWORK30_SP_LEVEL" Secure="yes"> | ||
25 | <RegistrySearch Id="NetFramework30SP" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0" Name="SP" Type="raw" /> | ||
26 | </Property> | ||
27 | </Fragment> | ||
28 | |||
29 | <!-- Location of .NET Framework 3.0 redistributable install root directory --> | ||
30 | <Fragment> | ||
31 | <Property Id="NETFRAMEWORK30INSTALLROOTDIR" Secure="yes"> | ||
32 | <RegistrySearch Id="NetFxInstallRootForNetfx30Search" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot"> | ||
33 | <DirectorySearch Id="NetFx30InstallRootSearch" Path="v3.0" Depth="0" /> | ||
34 | </RegistrySearch> | ||
35 | </Property> | ||
36 | </Fragment> | ||
37 | |||
38 | <!-- Location of .NET Framework 3.0 (64-bit) redistributable install root directory --> | ||
39 | <Fragment> | ||
40 | <Property Id="NETFRAMEWORK30INSTALLROOTDIR64" Secure="yes"> | ||
41 | <RegistrySearch Id="NetFxInstallRootForNetfx30Search64" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot" Bitness="always64"> | ||
42 | <DirectorySearch Id="NetFx30InstallRootSearch64" Path="v3.0" Depth="0" /> | ||
43 | </RegistrySearch> | ||
44 | </Property> | ||
45 | </Fragment> | ||
46 | |||
47 | <!-- set to #1 if the .NET Framework 3.0 Chinese (Simplified) language pack is installed (not set otherwise) --> | ||
48 | <Fragment> | ||
49 | <Property Id="NETFRAMEWORK30_ZH_CN_LANGPACK" Secure="yes"> | ||
50 | <RegistrySearch Id="NETFRAMEWORK30ZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\2052" Name="Install" Type="raw" /> | ||
51 | </Property> | ||
52 | </Fragment> | ||
53 | |||
54 | <!-- set to #1 if the .NET Framework 3.0 Chinese (Traditional) language pack is installed (not set otherwise) --> | ||
55 | <Fragment> | ||
56 | <Property Id="NETFRAMEWORK30_ZH_TW_LANGPACK" Secure="yes"> | ||
57 | <RegistrySearch Id="NETFRAMEWORK30ZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1028" Name="Install" Type="raw" /> | ||
58 | </Property> | ||
59 | </Fragment> | ||
60 | |||
61 | <!-- set to #1 if the .NET Framework 3.0 Czech language pack is installed (not set otherwise) --> | ||
62 | <Fragment> | ||
63 | <Property Id="NETFRAMEWORK30_CS_CZ_LANGPACK" Secure="yes"> | ||
64 | <RegistrySearch Id="NETFRAMEWORK30CsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1029" Name="Install" Type="raw" /> | ||
65 | </Property> | ||
66 | </Fragment> | ||
67 | |||
68 | <!-- set to #1 if the .NET Framework 3.0 Danish language pack is installed (not set otherwise) --> | ||
69 | <Fragment> | ||
70 | <Property Id="NETFRAMEWORK30_DA_DK_LANGPACK" Secure="yes"> | ||
71 | <RegistrySearch Id="NETFRAMEWORK30DaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1030" Name="Install" Type="raw" /> | ||
72 | </Property> | ||
73 | </Fragment> | ||
74 | |||
75 | <!-- set to #1 if the .NET Framework 3.0 Dutch language pack is installed (not set otherwise) --> | ||
76 | <Fragment> | ||
77 | <Property Id="NETFRAMEWORK30_NL_NL_LANGPACK" Secure="yes"> | ||
78 | <RegistrySearch Id="NETFRAMEWORK30NlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1043" Name="Install" Type="raw" /> | ||
79 | </Property> | ||
80 | </Fragment> | ||
81 | |||
82 | <!-- set to #1 if the .NET Framework 3.0 Finnish language pack is installed (not set otherwise) --> | ||
83 | <Fragment> | ||
84 | <Property Id="NETFRAMEWORK30_FI_FI_LANGPACK" Secure="yes"> | ||
85 | <RegistrySearch Id="NETFRAMEWORK30FiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1035" Name="Install" Type="raw" /> | ||
86 | </Property> | ||
87 | </Fragment> | ||
88 | |||
89 | <!-- set to #1 if the .NET Framework 3.0 French language pack is installed (not set otherwise) --> | ||
90 | <Fragment> | ||
91 | <Property Id="NETFRAMEWORK30_FR_FR_LANGPACK" Secure="yes"> | ||
92 | <RegistrySearch Id="NETFRAMEWORK30FrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1036" Name="Install" Type="raw" /> | ||
93 | </Property> | ||
94 | </Fragment> | ||
95 | |||
96 | <!-- set to #1 if the .NET Framework 3.0 German language pack is installed (not set otherwise) --> | ||
97 | <Fragment> | ||
98 | <Property Id="NETFRAMEWORK30_DE_DE_LANGPACK" Secure="yes"> | ||
99 | <RegistrySearch Id="NETFRAMEWORK30DeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1031" Name="Install" Type="raw" /> | ||
100 | </Property> | ||
101 | </Fragment> | ||
102 | |||
103 | <!-- set to #1 if the .NET Framework 3.0 Greek language pack is installed (not set otherwise) --> | ||
104 | <Fragment> | ||
105 | <Property Id="NETFRAMEWORK30_EL_GR_LANGPACK" Secure="yes"> | ||
106 | <RegistrySearch Id="NETFRAMEWORK30ElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1032" Name="Install" Type="raw" /> | ||
107 | </Property> | ||
108 | </Fragment> | ||
109 | |||
110 | <!-- set to #1 if the .NET Framework 3.0 Hungarian language pack is installed (not set otherwise) --> | ||
111 | <Fragment> | ||
112 | <Property Id="NETFRAMEWORK30_HU_HU_LANGPACK" Secure="yes"> | ||
113 | <RegistrySearch Id="NETFRAMEWORK30HuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1038" Name="Install" Type="raw" /> | ||
114 | </Property> | ||
115 | </Fragment> | ||
116 | |||
117 | <!-- set to #1 if the .NET Framework 3.0 Italian language pack is installed (not set otherwise) --> | ||
118 | <Fragment> | ||
119 | <Property Id="NETFRAMEWORK30_IT_IT_LANGPACK" Secure="yes"> | ||
120 | <RegistrySearch Id="NETFRAMEWORK30ItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1040" Name="Install" Type="raw" /> | ||
121 | </Property> | ||
122 | </Fragment> | ||
123 | |||
124 | <!-- set to #1 if the .NET Framework 3.0 Japanese language pack is installed (not set otherwise) --> | ||
125 | <Fragment> | ||
126 | <Property Id="NETFRAMEWORK30_JA_JP_LANGPACK" Secure="yes"> | ||
127 | <RegistrySearch Id="NETFRAMEWORK30JaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1041" Name="Install" Type="raw" /> | ||
128 | </Property> | ||
129 | </Fragment> | ||
130 | |||
131 | <!-- set to #1 if the .NET Framework 3.0 Korean language pack is installed (not set otherwise) --> | ||
132 | <Fragment> | ||
133 | <Property Id="NETFRAMEWORK30_KO_KR_LANGPACK" Secure="yes"> | ||
134 | <RegistrySearch Id="NETFRAMEWORK30KoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1042" Name="Install" Type="raw" /> | ||
135 | </Property> | ||
136 | </Fragment> | ||
137 | |||
138 | <!-- set to #1 if the .NET Framework 3.0 Norwegian language pack is installed (not set otherwise) --> | ||
139 | <Fragment> | ||
140 | <Property Id="NETFRAMEWORK30_NB_NO_LANGPACK" Secure="yes"> | ||
141 | <RegistrySearch Id="NETFRAMEWORK30NbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1044" Name="Install" Type="raw" /> | ||
142 | </Property> | ||
143 | </Fragment> | ||
144 | |||
145 | <!-- set to #1 if the .NET Framework 3.0 Polish language pack is installed (not set otherwise) --> | ||
146 | <Fragment> | ||
147 | <Property Id="NETFRAMEWORK30_PL_PL_LANGPACK" Secure="yes"> | ||
148 | <RegistrySearch Id="NETFRAMEWORK30PlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1045" Name="Install" Type="raw" /> | ||
149 | </Property> | ||
150 | </Fragment> | ||
151 | |||
152 | <!-- set to #1 if the .NET Framework 3.0 Portuguese (Brazil) language pack is installed (not set otherwise) --> | ||
153 | <Fragment> | ||
154 | <Property Id="NETFRAMEWORK30_PT_BR_LANGPACK" Secure="yes"> | ||
155 | <RegistrySearch Id="NETFRAMEWORK30PtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1046" Name="Install" Type="raw" /> | ||
156 | </Property> | ||
157 | </Fragment> | ||
158 | |||
159 | <!-- set to #1 if the .NET Framework 3.0 Portuguese (Portugal) language pack is installed (not set otherwise) --> | ||
160 | <Fragment> | ||
161 | <Property Id="NETFRAMEWORK30_PT_PT_LANGPACK" Secure="yes"> | ||
162 | <RegistrySearch Id="NETFRAMEWORK30PtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\2070" Name="Install" Type="raw" /> | ||
163 | </Property> | ||
164 | </Fragment> | ||
165 | |||
166 | <!-- set to #1 if the .NET Framework 3.0 Russian language pack is installed (not set otherwise) --> | ||
167 | <Fragment> | ||
168 | <Property Id="NETFRAMEWORK30_RU_RU_LANGPACK" Secure="yes"> | ||
169 | <RegistrySearch Id="NETFRAMEWORK30RuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1049" Name="Install" Type="raw" /> | ||
170 | </Property> | ||
171 | </Fragment> | ||
172 | |||
173 | <!-- set to #1 if the .NET Framework 3.0 Spanish language pack is installed (not set otherwise) --> | ||
174 | <Fragment> | ||
175 | <Property Id="NETFRAMEWORK30_ES_ES_LANGPACK" Secure="yes"> | ||
176 | <RegistrySearch Id="NETFRAMEWORK30EsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\3082" Name="Install" Type="raw" /> | ||
177 | </Property> | ||
178 | </Fragment> | ||
179 | |||
180 | <!-- set to #1 if the .NET Framework 3.0 Swedish language pack is installed (not set otherwise) --> | ||
181 | <Fragment> | ||
182 | <Property Id="NETFRAMEWORK30_SV_SE_LANGPACK" Secure="yes"> | ||
183 | <RegistrySearch Id="NETFRAMEWORK30SvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1053" Name="Install" Type="raw" /> | ||
184 | </Property> | ||
185 | </Fragment> | ||
186 | |||
187 | <!-- set to #1 if the .NET Framework 3.0 Turkish language pack is installed (not set otherwise) --> | ||
188 | <Fragment> | ||
189 | <Property Id="NETFRAMEWORK30_TR_TR_LANGPACK" Secure="yes"> | ||
190 | <RegistrySearch Id="NETFRAMEWORK30TrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\1055" Name="Install" Type="raw" /> | ||
191 | </Property> | ||
192 | </Fragment> | ||
193 | |||
194 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx4.5.wxs b/src/ext/NetFx/wixlib/NetFx4.5.wxs new file mode 100644 index 00000000..443235d4 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx4.5.wxs | |||
@@ -0,0 +1,198 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 4.5 - http://msdn.microsoft.com/en-us/library/5a4x27ek.aspx, http://msdn.microsoft.com/en-us/library/ee942965(v=VS.110).aspx | ||
12 | --> | ||
13 | |||
14 | <?define NetFx45MinRelease = 378389?> | ||
15 | <?define NetFx45WebLink = http://go.microsoft.com/fwlink/?LinkId=225704 ?> | ||
16 | <?define NetFx45RedistLink = http://go.microsoft.com/fwlink/?LinkId=225702 ?> | ||
17 | <?define NetFx45EulaLink = http://go.microsoft.com/fwlink/?LinkID=260867 ?> | ||
18 | <?define NetFx45WebId = NetFx45Web ?> | ||
19 | <?define NetFx45RedistId = NetFx45Redist ?> | ||
20 | |||
21 | <Fragment> | ||
22 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
23 | <Property Id="WIX_IS_NETFRAMEWORK_45_OR_LATER_INSTALLED" Secure="yes" /> | ||
24 | <SetProperty Id="WIX_IS_NETFRAMEWORK_45_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx45MinRelease)"" /> | ||
25 | </Fragment> | ||
26 | |||
27 | <Fragment> | ||
28 | <util:RegistrySearch Id="NETFRAMEWORK45" Variable="NETFRAMEWORK45" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Value="Release" Result="value" /> | ||
29 | </Fragment> | ||
30 | |||
31 | <!-- set to Release number of the .NET Framework 4.5 if installed (not set otherwise) --> | ||
32 | <Fragment> | ||
33 | <Property Id="NETFRAMEWORK45" Secure="yes"> | ||
34 | <RegistrySearch Id="NetFramework45" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Name="Release" Type="raw" /> | ||
35 | </Property> | ||
36 | </Fragment> | ||
37 | |||
38 | <!-- set to Release number of the .NET Framework 4.5 Arabic language pack if installed (not set otherwise) --> | ||
39 | <Fragment> | ||
40 | <Property Id="NETFRAMEWORK45_AR_SA_LANGPACK" Secure="yes"> | ||
41 | <RegistrySearch Id="NETFRAMEWORK45ArSaLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1025" Name="Release" Type="raw" /> | ||
42 | </Property> | ||
43 | </Fragment> | ||
44 | |||
45 | <!-- set to Release number of the .NET Framework 4.5 Chinese (Simplified) language pack if installed (not set otherwise) --> | ||
46 | <Fragment> | ||
47 | <Property Id="NETFRAMEWORK45_ZH_CN_LANGPACK" Secure="yes"> | ||
48 | <RegistrySearch Id="NETFRAMEWORK45ZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\2052" Name="Release" Type="raw" /> | ||
49 | </Property> | ||
50 | </Fragment> | ||
51 | |||
52 | <!-- set to Release number of the .NET Framework 4.5 Chinese (Traditional) language pack if installed (not set otherwise) --> | ||
53 | <Fragment> | ||
54 | <Property Id="NETFRAMEWORK45_ZH_TW_LANGPACK" Secure="yes"> | ||
55 | <RegistrySearch Id="NETFRAMEWORK45ZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1028" Name="Release" Type="raw" /> | ||
56 | </Property> | ||
57 | </Fragment> | ||
58 | |||
59 | <!-- set to Release number of the .NET Framework 4.5 Czech language pack if installed (not set otherwise) --> | ||
60 | <Fragment> | ||
61 | <Property Id="NETFRAMEWORK45_CS_CZ_LANGPACK" Secure="yes"> | ||
62 | <RegistrySearch Id="NETFRAMEWORK45CsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1029" Name="Release" Type="raw" /> | ||
63 | </Property> | ||
64 | </Fragment> | ||
65 | |||
66 | <!-- set to Release number of the .NET Framework 4.5 Danish language pack if installed (not set otherwise) --> | ||
67 | <Fragment> | ||
68 | <Property Id="NETFRAMEWORK45_DA_DK_LANGPACK" Secure="yes"> | ||
69 | <RegistrySearch Id="NETFRAMEWORK45DaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1030" Name="Release" Type="raw" /> | ||
70 | </Property> | ||
71 | </Fragment> | ||
72 | |||
73 | <!-- set to Release number of the .NET Framework 4.5 Dutch language pack if installed (not set otherwise) --> | ||
74 | <Fragment> | ||
75 | <Property Id="NETFRAMEWORK45_NL_NL_LANGPACK" Secure="yes"> | ||
76 | <RegistrySearch Id="NETFRAMEWORK45NlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1043" Name="Release" Type="raw" /> | ||
77 | </Property> | ||
78 | </Fragment> | ||
79 | |||
80 | <!-- set to Release number of the .NET Framework 4.5 Finnish language pack if installed (not set otherwise) --> | ||
81 | <Fragment> | ||
82 | <Property Id="NETFRAMEWORK45_FI_FI_LANGPACK" Secure="yes"> | ||
83 | <RegistrySearch Id="NETFRAMEWORK45FiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1035" Name="Release" Type="raw" /> | ||
84 | </Property> | ||
85 | </Fragment> | ||
86 | |||
87 | <!-- set to Release number of the .NET Framework 4.5 French language pack if installed (not set otherwise) --> | ||
88 | <Fragment> | ||
89 | <Property Id="NETFRAMEWORK45_FR_FR_LANGPACK" Secure="yes"> | ||
90 | <RegistrySearch Id="NETFRAMEWORK45FrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1036" Name="Release" Type="raw" /> | ||
91 | </Property> | ||
92 | </Fragment> | ||
93 | |||
94 | <!-- set to Release number of the .NET Framework 4.5 German language pack if installed (not set otherwise) --> | ||
95 | <Fragment> | ||
96 | <Property Id="NETFRAMEWORK45_DE_DE_LANGPACK" Secure="yes"> | ||
97 | <RegistrySearch Id="NETFRAMEWORK45DeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1031" Name="Release" Type="raw" /> | ||
98 | </Property> | ||
99 | </Fragment> | ||
100 | |||
101 | <!-- set to Release number of the .NET Framework 4.5 Greek language pack if installed (not set otherwise) --> | ||
102 | <Fragment> | ||
103 | <Property Id="NETFRAMEWORK45_EL_GR_LANGPACK" Secure="yes"> | ||
104 | <RegistrySearch Id="NETFRAMEWORK45ElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1032" Name="Release" Type="raw" /> | ||
105 | </Property> | ||
106 | </Fragment> | ||
107 | |||
108 | <!-- set to Release number of the .NET Framework 4.5 Hebrew language pack if installed (not set otherwise) --> | ||
109 | <Fragment> | ||
110 | <Property Id="NETFRAMEWORK45_HE_IL_LANGPACK" Secure="yes"> | ||
111 | <RegistrySearch Id="NETFRAMEWORK45HeIlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1037" Name="Release" Type="raw" /> | ||
112 | </Property> | ||
113 | </Fragment> | ||
114 | |||
115 | <!-- set to Release number of the .NET Framework 4.5 Hungarian language pack if installed (not set otherwise) --> | ||
116 | <Fragment> | ||
117 | <Property Id="NETFRAMEWORK45_HU_HU_LANGPACK" Secure="yes"> | ||
118 | <RegistrySearch Id="NETFRAMEWORK45HuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1038" Name="Release" Type="raw" /> | ||
119 | </Property> | ||
120 | </Fragment> | ||
121 | |||
122 | <!-- set to Release number of the .NET Framework 4.5 Italian language pack if installed (not set otherwise) --> | ||
123 | <Fragment> | ||
124 | <Property Id="NETFRAMEWORK45_IT_IT_LANGPACK" Secure="yes"> | ||
125 | <RegistrySearch Id="NETFRAMEWORK45ItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1040" Name="Release" Type="raw" /> | ||
126 | </Property> | ||
127 | </Fragment> | ||
128 | |||
129 | <!-- set to Release number of the .NET Framework 4.5 Japanese language pack if installed (not set otherwise) --> | ||
130 | <Fragment> | ||
131 | <Property Id="NETFRAMEWORK45_JA_JP_LANGPACK" Secure="yes"> | ||
132 | <RegistrySearch Id="NETFRAMEWORK45JaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1041" Name="Release" Type="raw" /> | ||
133 | </Property> | ||
134 | </Fragment> | ||
135 | |||
136 | <!-- set to Release number of the .NET Framework 4.5 Korean language pack if installed (not set otherwise) --> | ||
137 | <Fragment> | ||
138 | <Property Id="NETFRAMEWORK45_KO_KR_LANGPACK" Secure="yes"> | ||
139 | <RegistrySearch Id="NETFRAMEWORK45KoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1042" Name="Release" Type="raw" /> | ||
140 | </Property> | ||
141 | </Fragment> | ||
142 | |||
143 | <!-- set to Release number of the .NET Framework 4.5 Norwegian language pack if installed (not set otherwise) --> | ||
144 | <Fragment> | ||
145 | <Property Id="NETFRAMEWORK45_NB_NO_LANGPACK" Secure="yes"> | ||
146 | <RegistrySearch Id="NETFRAMEWORK45NbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1044" Name="Release" Type="raw" /> | ||
147 | </Property> | ||
148 | </Fragment> | ||
149 | |||
150 | <!-- set to Release number of the .NET Framework 4.5 Polish language pack if installed (not set otherwise) --> | ||
151 | <Fragment> | ||
152 | <Property Id="NETFRAMEWORK45_PL_PL_LANGPACK" Secure="yes"> | ||
153 | <RegistrySearch Id="NETFRAMEWORK45PlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1045" Name="Release" Type="raw" /> | ||
154 | </Property> | ||
155 | </Fragment> | ||
156 | |||
157 | <!-- set to Release number of the .NET Framework 4.5 Portuguese (Brazil) language pack if installed (not set otherwise) --> | ||
158 | <Fragment> | ||
159 | <Property Id="NETFRAMEWORK45_PT_BR_LANGPACK" Secure="yes"> | ||
160 | <RegistrySearch Id="NETFRAMEWORK45PtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1046" Name="Release" Type="raw" /> | ||
161 | </Property> | ||
162 | </Fragment> | ||
163 | |||
164 | <!-- set to Release number of the .NET Framework 4.5 Portuguese (Portugal) language pack if installed (not set otherwise) --> | ||
165 | <Fragment> | ||
166 | <Property Id="NETFRAMEWORK45_PT_PT_LANGPACK" Secure="yes"> | ||
167 | <RegistrySearch Id="NETFRAMEWORK45PtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\2070" Name="Release" Type="raw" /> | ||
168 | </Property> | ||
169 | </Fragment> | ||
170 | |||
171 | <!-- set to Release number of the .NET Framework 4.5 Russian language pack if installed (not set otherwise) --> | ||
172 | <Fragment> | ||
173 | <Property Id="NETFRAMEWORK45_RU_RU_LANGPACK" Secure="yes"> | ||
174 | <RegistrySearch Id="NETFRAMEWORK45RuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1049" Name="Release" Type="raw" /> | ||
175 | </Property> | ||
176 | </Fragment> | ||
177 | |||
178 | <!-- set to Release number of the .NET Framework 4.5 Spanish language pack if installed (not set otherwise) --> | ||
179 | <Fragment> | ||
180 | <Property Id="NETFRAMEWORK45_ES_ES_LANGPACK" Secure="yes"> | ||
181 | <RegistrySearch Id="NETFRAMEWORK45EsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\3082" Name="Release" Type="raw" /> | ||
182 | </Property> | ||
183 | </Fragment> | ||
184 | |||
185 | <!-- set to Release number of the .NET Framework 4.5 Swedish language pack if installed (not set otherwise) --> | ||
186 | <Fragment> | ||
187 | <Property Id="NETFRAMEWORK45_SV_SE_LANGPACK" Secure="yes"> | ||
188 | <RegistrySearch Id="NETFRAMEWORK45SvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1053" Name="Release" Type="raw" /> | ||
189 | </Property> | ||
190 | </Fragment> | ||
191 | |||
192 | <!-- set to Release number of the .NET Framework 4.5 Turkish language pack if installed (not set otherwise) --> | ||
193 | <Fragment> | ||
194 | <Property Id="NETFRAMEWORK45_TR_TR_LANGPACK" Secure="yes"> | ||
195 | <RegistrySearch Id="NETFRAMEWORK45TrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1055" Name="Release" Type="raw" /> | ||
196 | </Property> | ||
197 | </Fragment> | ||
198 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx4.wxs b/src/ext/NetFx/wixlib/NetFx4.wxs new file mode 100644 index 00000000..295d8078 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx4.wxs | |||
@@ -0,0 +1,416 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 4.0 full & client - http://msdn.microsoft.com/en-us/library/ee942965.aspx | ||
12 | --> | ||
13 | |||
14 | <?define NetFx40WebLink = http://go.microsoft.com/fwlink/?linkid=182805 ?> | ||
15 | <?define NetFx40RedistLink = http://go.microsoft.com/fwlink/?LinkId=247729 ?> | ||
16 | <?define NetFx40ClientWebLink = http://go.microsoft.com/fwlink/?linkid=182804 ?> | ||
17 | <?define NetFx40ClientRedistLink = http://go.microsoft.com/fwlink/?LinkId=247730 ?> | ||
18 | <?define NetFx40EulaLink = http://go.microsoft.com/fwlink/?LinkID=188993 ?> | ||
19 | <?define NetFx40WebId = NetFx40Web ?> | ||
20 | <?define NetFx40RedistId = NetFx40Redist ?> | ||
21 | <?define NetFx40ClientWebId = NetFx40ClientWeb ?> | ||
22 | <?define NetFx40ClientRedistId = NetFx40ClientRedist ?> | ||
23 | |||
24 | <Fragment> | ||
25 | <PropertyRef Id="NETFRAMEWORK40FULL" /> | ||
26 | <Property Id="WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED" Secure="yes" /> | ||
27 | <SetProperty Id="WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="NETFRAMEWORK40FULL" /> | ||
28 | </Fragment> | ||
29 | |||
30 | <Fragment> | ||
31 | <util:RegistrySearch Id="NETFRAMEWORK40" Variable="NETFRAMEWORK40" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Value="Install" Result="value" /> | ||
32 | </Fragment> | ||
33 | |||
34 | <Fragment> | ||
35 | <util:RegistrySearch Id="NETFRAMEWORK40CLIENT" Variable="NETFRAMEWORK40CLIENT" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" Value="Install" Result="value" /> | ||
36 | </Fragment> | ||
37 | |||
38 | <!-- set to #1 if the .NET Framework 4.0 client is installed (not set otherwise) --> | ||
39 | <Fragment> | ||
40 | <Property Id="NETFRAMEWORK40CLIENT" Secure="yes"> | ||
41 | <RegistrySearch Id="NetFramework40Client" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" Name="Install" Type="raw" /> | ||
42 | </Property> | ||
43 | </Fragment> | ||
44 | |||
45 | <!-- Indicates the servicing level for the .NET Framework 4.0 client. --> | ||
46 | <Fragment> | ||
47 | <Property Id="NETFRAMEWORK40CLIENT_SERVICING_LEVEL" Secure="yes"> | ||
48 | <RegistrySearch Id="NetFramework40ClientServicing" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client" Name="Servicing" Type="raw" /> | ||
49 | </Property> | ||
50 | </Fragment> | ||
51 | |||
52 | <!-- Location of .NET Framework 4.0 client redistributable install root directory --> | ||
53 | <Fragment> | ||
54 | <Property Id="NETFRAMEWORK40CLIENTINSTALLROOTDIR" Secure="yes"> | ||
55 | <RegistrySearch Id="NetFxInstallRootForNetfx40Client" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client" Name="InstallPath" Type="raw" /> | ||
56 | </Property> | ||
57 | </Fragment> | ||
58 | |||
59 | <!-- Location of .NET Framework 4.0 client (64-bit) redistributable install root directory --> | ||
60 | <Fragment> | ||
61 | <Property Id="NETFRAMEWORK40CLIENTINSTALLROOTDIR64" Secure="yes"> | ||
62 | <RegistrySearch Id="NetFxInstallRootForNetfx40Client64" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client" Name="InstallPath" Type="raw" Bitness="always64" /> | ||
63 | </Property> | ||
64 | </Fragment> | ||
65 | |||
66 | <!-- set to #1 if the .NET Framework 4.0 full is installed (not set otherwise) --> | ||
67 | <Fragment> | ||
68 | <Property Id="NETFRAMEWORK40FULL" Secure="yes"> | ||
69 | <RegistrySearch Id="NetFramework40Full" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Name="Install" Type="raw" /> | ||
70 | </Property> | ||
71 | </Fragment> | ||
72 | |||
73 | <!-- Indicates the servicing level for the .NET Framework 4.0 full. --> | ||
74 | <Fragment> | ||
75 | <Property Id="NETFRAMEWORK40FULL_SERVICING_LEVEL" Secure="yes"> | ||
76 | <RegistrySearch Id="NetFramework40FullServicing" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full" Name="Servicing" Type="raw" /> | ||
77 | </Property> | ||
78 | </Fragment> | ||
79 | |||
80 | <!-- Location of .NET Framework 4.0 full redistributable install root directory --> | ||
81 | <Fragment> | ||
82 | <Property Id="NETFRAMEWORK40FULLINSTALLROOTDIR" Secure="yes"> | ||
83 | <RegistrySearch Id="NetFxInstallRootForNetfx40Full" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full" Name="InstallPath" Type="raw" /> | ||
84 | </Property> | ||
85 | </Fragment> | ||
86 | |||
87 | <!-- Location of .NET Framework 4.0 full (64-bit) redistributable install root directory --> | ||
88 | <Fragment> | ||
89 | <Property Id="NETFRAMEWORK40FULLINSTALLROOTDIR64" Secure="yes"> | ||
90 | <RegistrySearch Id="NetFxInstallRootForNetfx40Full64" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full" Name="InstallPath" Type="raw" Bitness="always64" /> | ||
91 | </Property> | ||
92 | </Fragment> | ||
93 | |||
94 | <!-- set to #1 if the .NET Framework 4.0 Client Arabic language pack is installed (not set otherwise) --> | ||
95 | <Fragment> | ||
96 | <Property Id="NETFRAMEWORK40CLIENT_AR_SA_LANGPACK" Secure="yes"> | ||
97 | <RegistrySearch Id="NETFRAMEWORK40CLIENTArSaLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1025" Name="Install" Type="raw" /> | ||
98 | </Property> | ||
99 | </Fragment> | ||
100 | |||
101 | <!-- set to #1 if the .NET Framework 4.0 Client Chinese (Simplified) language pack is installed (not set otherwise) --> | ||
102 | <Fragment> | ||
103 | <Property Id="NETFRAMEWORK40CLIENT_ZH_CN_LANGPACK" Secure="yes"> | ||
104 | <RegistrySearch Id="NETFRAMEWORK40CLIENTZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\2052" Name="Install" Type="raw" /> | ||
105 | </Property> | ||
106 | </Fragment> | ||
107 | |||
108 | <!-- set to #1 if the .NET Framework 4.0 Client Chinese (Traditional) language pack is installed (not set otherwise) --> | ||
109 | <Fragment> | ||
110 | <Property Id="NETFRAMEWORK40CLIENT_ZH_TW_LANGPACK" Secure="yes"> | ||
111 | <RegistrySearch Id="NETFRAMEWORK40CLIENTZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1028" Name="Install" Type="raw" /> | ||
112 | </Property> | ||
113 | </Fragment> | ||
114 | |||
115 | <!-- set to #1 if the .NET Framework 4.0 Client Czech language pack is installed (not set otherwise) --> | ||
116 | <Fragment> | ||
117 | <Property Id="NETFRAMEWORK40CLIENT_CS_CZ_LANGPACK" Secure="yes"> | ||
118 | <RegistrySearch Id="NETFRAMEWORK40CLIENTCsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1029" Name="Install" Type="raw" /> | ||
119 | </Property> | ||
120 | </Fragment> | ||
121 | |||
122 | <!-- set to #1 if the .NET Framework 4.0 Client Danish language pack is installed (not set otherwise) --> | ||
123 | <Fragment> | ||
124 | <Property Id="NETFRAMEWORK40CLIENT_DA_DK_LANGPACK" Secure="yes"> | ||
125 | <RegistrySearch Id="NETFRAMEWORK40CLIENTDaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1030" Name="Install" Type="raw" /> | ||
126 | </Property> | ||
127 | </Fragment> | ||
128 | |||
129 | <!-- set to #1 if the .NET Framework 4.0 Client Dutch language pack is installed (not set otherwise) --> | ||
130 | <Fragment> | ||
131 | <Property Id="NETFRAMEWORK40CLIENT_NL_NL_LANGPACK" Secure="yes"> | ||
132 | <RegistrySearch Id="NETFRAMEWORK40CLIENTNlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1043" Name="Install" Type="raw" /> | ||
133 | </Property> | ||
134 | </Fragment> | ||
135 | |||
136 | <!-- set to #1 if the .NET Framework 4.0 Client Finnish language pack is installed (not set otherwise) --> | ||
137 | <Fragment> | ||
138 | <Property Id="NETFRAMEWORK40CLIENT_FI_FI_LANGPACK" Secure="yes"> | ||
139 | <RegistrySearch Id="NETFRAMEWORK40CLIENTFiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1035" Name="Install" Type="raw" /> | ||
140 | </Property> | ||
141 | </Fragment> | ||
142 | |||
143 | <!-- set to #1 if the .NET Framework 4.0 Client French language pack is installed (not set otherwise) --> | ||
144 | <Fragment> | ||
145 | <Property Id="NETFRAMEWORK40CLIENT_FR_FR_LANGPACK" Secure="yes"> | ||
146 | <RegistrySearch Id="NETFRAMEWORK40CLIENTFrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1036" Name="Install" Type="raw" /> | ||
147 | </Property> | ||
148 | </Fragment> | ||
149 | |||
150 | <!-- set to #1 if the .NET Framework 4.0 Client German language pack is installed (not set otherwise) --> | ||
151 | <Fragment> | ||
152 | <Property Id="NETFRAMEWORK40CLIENT_DE_DE_LANGPACK" Secure="yes"> | ||
153 | <RegistrySearch Id="NETFRAMEWORK40CLIENTDeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1031" Name="Install" Type="raw" /> | ||
154 | </Property> | ||
155 | </Fragment> | ||
156 | |||
157 | <!-- set to #1 if the .NET Framework 4.0 Client Greek language pack is installed (not set otherwise) --> | ||
158 | <Fragment> | ||
159 | <Property Id="NETFRAMEWORK40CLIENT_EL_GR_LANGPACK" Secure="yes"> | ||
160 | <RegistrySearch Id="NETFRAMEWORK40CLIENTElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1032" Name="Install" Type="raw" /> | ||
161 | </Property> | ||
162 | </Fragment> | ||
163 | |||
164 | <!-- set to #1 if the .NET Framework 4.0 Client Hebrew language pack is installed (not set otherwise) --> | ||
165 | <Fragment> | ||
166 | <Property Id="NETFRAMEWORK40CLIENT_HE_IL_LANGPACK" Secure="yes"> | ||
167 | <RegistrySearch Id="NETFRAMEWORK40CLIENTHeIlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1037" Name="Install" Type="raw" /> | ||
168 | </Property> | ||
169 | </Fragment> | ||
170 | |||
171 | <!-- set to #1 if the .NET Framework 4.0 Client Hungarian language pack is installed (not set otherwise) --> | ||
172 | <Fragment> | ||
173 | <Property Id="NETFRAMEWORK40CLIENT_HU_HU_LANGPACK" Secure="yes"> | ||
174 | <RegistrySearch Id="NETFRAMEWORK40CLIENTHuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1038" Name="Install" Type="raw" /> | ||
175 | </Property> | ||
176 | </Fragment> | ||
177 | |||
178 | <!-- set to #1 if the .NET Framework 4.0 Client Italian language pack is installed (not set otherwise) --> | ||
179 | <Fragment> | ||
180 | <Property Id="NETFRAMEWORK40CLIENT_IT_IT_LANGPACK" Secure="yes"> | ||
181 | <RegistrySearch Id="NETFRAMEWORK40CLIENTItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1040" Name="Install" Type="raw" /> | ||
182 | </Property> | ||
183 | </Fragment> | ||
184 | |||
185 | <!-- set to #1 if the .NET Framework 4.0 Client Japanese language pack is installed (not set otherwise) --> | ||
186 | <Fragment> | ||
187 | <Property Id="NETFRAMEWORK40CLIENT_JA_JP_LANGPACK" Secure="yes"> | ||
188 | <RegistrySearch Id="NETFRAMEWORK40CLIENTJaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1041" Name="Install" Type="raw" /> | ||
189 | </Property> | ||
190 | </Fragment> | ||
191 | |||
192 | <!-- set to #1 if the .NET Framework 4.0 Client Korean language pack is installed (not set otherwise) --> | ||
193 | <Fragment> | ||
194 | <Property Id="NETFRAMEWORK40CLIENT_KO_KR_LANGPACK" Secure="yes"> | ||
195 | <RegistrySearch Id="NETFRAMEWORK40CLIENTKoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1042" Name="Install" Type="raw" /> | ||
196 | </Property> | ||
197 | </Fragment> | ||
198 | |||
199 | <!-- set to #1 if the .NET Framework 4.0 Client Norwegian language pack is installed (not set otherwise) --> | ||
200 | <Fragment> | ||
201 | <Property Id="NETFRAMEWORK40CLIENT_NB_NO_LANGPACK" Secure="yes"> | ||
202 | <RegistrySearch Id="NETFRAMEWORK40CLIENTNbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1044" Name="Install" Type="raw" /> | ||
203 | </Property> | ||
204 | </Fragment> | ||
205 | |||
206 | <!-- set to #1 if the .NET Framework 4.0 Client Polish language pack is installed (not set otherwise) --> | ||
207 | <Fragment> | ||
208 | <Property Id="NETFRAMEWORK40CLIENT_PL_PL_LANGPACK" Secure="yes"> | ||
209 | <RegistrySearch Id="NETFRAMEWORK40CLIENTPlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1045" Name="Install" Type="raw" /> | ||
210 | </Property> | ||
211 | </Fragment> | ||
212 | |||
213 | <!-- set to #1 if the .NET Framework 4.0 Client Portuguese (Brazil) language pack is installed (not set otherwise) --> | ||
214 | <Fragment> | ||
215 | <Property Id="NETFRAMEWORK40CLIENT_PT_BR_LANGPACK" Secure="yes"> | ||
216 | <RegistrySearch Id="NETFRAMEWORK40CLIENTPtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1046" Name="Install" Type="raw" /> | ||
217 | </Property> | ||
218 | </Fragment> | ||
219 | |||
220 | <!-- set to #1 if the .NET Framework 4.0 Client Portuguese (Portugal) language pack is installed (not set otherwise) --> | ||
221 | <Fragment> | ||
222 | <Property Id="NETFRAMEWORK40CLIENT_PT_PT_LANGPACK" Secure="yes"> | ||
223 | <RegistrySearch Id="NETFRAMEWORK40CLIENTPtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\2070" Name="Install" Type="raw" /> | ||
224 | </Property> | ||
225 | </Fragment> | ||
226 | |||
227 | <!-- set to #1 if the .NET Framework 4.0 Client Russian language pack is installed (not set otherwise) --> | ||
228 | <Fragment> | ||
229 | <Property Id="NETFRAMEWORK40CLIENT_RU_RU_LANGPACK" Secure="yes"> | ||
230 | <RegistrySearch Id="NETFRAMEWORK40CLIENTRuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1049" Name="Install" Type="raw" /> | ||
231 | </Property> | ||
232 | </Fragment> | ||
233 | |||
234 | <!-- set to #1 if the .NET Framework 4.0 Client Spanish language pack is installed (not set otherwise) --> | ||
235 | <Fragment> | ||
236 | <Property Id="NETFRAMEWORK40CLIENT_ES_ES_LANGPACK" Secure="yes"> | ||
237 | <RegistrySearch Id="NETFRAMEWORK40CLIENTEsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\3082" Name="Install" Type="raw" /> | ||
238 | </Property> | ||
239 | </Fragment> | ||
240 | |||
241 | <!-- set to #1 if the .NET Framework 4.0 Client Swedish language pack is installed (not set otherwise) --> | ||
242 | <Fragment> | ||
243 | <Property Id="NETFRAMEWORK40CLIENT_SV_SE_LANGPACK" Secure="yes"> | ||
244 | <RegistrySearch Id="NETFRAMEWORK40CLIENTSvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1053" Name="Install" Type="raw" /> | ||
245 | </Property> | ||
246 | </Fragment> | ||
247 | |||
248 | <!-- set to #1 if the .NET Framework 4.0 Client Turkish language pack is installed (not set otherwise) --> | ||
249 | <Fragment> | ||
250 | <Property Id="NETFRAMEWORK40CLIENT_TR_TR_LANGPACK" Secure="yes"> | ||
251 | <RegistrySearch Id="NETFRAMEWORK40CLIENTTrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Client\1055" Name="Install" Type="raw" /> | ||
252 | </Property> | ||
253 | </Fragment> | ||
254 | |||
255 | <!-- set to #1 if the .NET Framework 4.0 Full Arabic language pack is installed (not set otherwise) --> | ||
256 | <Fragment> | ||
257 | <Property Id="NETFRAMEWORK40FULL_AR_SA_LANGPACK" Secure="yes"> | ||
258 | <RegistrySearch Id="NETFRAMEWORK40FULLArSaLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1025" Name="Install" Type="raw" /> | ||
259 | </Property> | ||
260 | </Fragment> | ||
261 | |||
262 | <!-- set to #1 if the .NET Framework 4.0 Full Chinese (Simplified) language pack is installed (not set otherwise) --> | ||
263 | <Fragment> | ||
264 | <Property Id="NETFRAMEWORK40FULL_ZH_CN_LANGPACK" Secure="yes"> | ||
265 | <RegistrySearch Id="NETFRAMEWORK40FULLZhCnLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\2052" Name="Install" Type="raw" /> | ||
266 | </Property> | ||
267 | </Fragment> | ||
268 | |||
269 | <!-- set to #1 if the .NET Framework 4.0 Full Chinese (Traditional) language pack is installed (not set otherwise) --> | ||
270 | <Fragment> | ||
271 | <Property Id="NETFRAMEWORK40FULL_ZH_TW_LANGPACK" Secure="yes"> | ||
272 | <RegistrySearch Id="NETFRAMEWORK40FULLZhTwLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1028" Name="Install" Type="raw" /> | ||
273 | </Property> | ||
274 | </Fragment> | ||
275 | |||
276 | <!-- set to #1 if the .NET Framework 4.0 Full Czech language pack is installed (not set otherwise) --> | ||
277 | <Fragment> | ||
278 | <Property Id="NETFRAMEWORK40FULL_CS_CZ_LANGPACK" Secure="yes"> | ||
279 | <RegistrySearch Id="NETFRAMEWORK40FULLCsCzLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1029" Name="Install" Type="raw" /> | ||
280 | </Property> | ||
281 | </Fragment> | ||
282 | |||
283 | <!-- set to #1 if the .NET Framework 4.0 Full Danish language pack is installed (not set otherwise) --> | ||
284 | <Fragment> | ||
285 | <Property Id="NETFRAMEWORK40FULL_DA_DK_LANGPACK" Secure="yes"> | ||
286 | <RegistrySearch Id="NETFRAMEWORK40FULLDaDkLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1030" Name="Install" Type="raw" /> | ||
287 | </Property> | ||
288 | </Fragment> | ||
289 | |||
290 | <!-- set to #1 if the .NET Framework 4.0 Full Dutch language pack is installed (not set otherwise) --> | ||
291 | <Fragment> | ||
292 | <Property Id="NETFRAMEWORK40FULL_NL_NL_LANGPACK" Secure="yes"> | ||
293 | <RegistrySearch Id="NETFRAMEWORK40FULLNlNlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1043" Name="Install" Type="raw" /> | ||
294 | </Property> | ||
295 | </Fragment> | ||
296 | |||
297 | <!-- set to #1 if the .NET Framework 4.0 Full Finnish language pack is installed (not set otherwise) --> | ||
298 | <Fragment> | ||
299 | <Property Id="NETFRAMEWORK40FULL_FI_FI_LANGPACK" Secure="yes"> | ||
300 | <RegistrySearch Id="NETFRAMEWORK40FULLFiFiLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1035" Name="Install" Type="raw" /> | ||
301 | </Property> | ||
302 | </Fragment> | ||
303 | |||
304 | <!-- set to #1 if the .NET Framework 4.0 Full French language pack is installed (not set otherwise) --> | ||
305 | <Fragment> | ||
306 | <Property Id="NETFRAMEWORK40FULL_FR_FR_LANGPACK" Secure="yes"> | ||
307 | <RegistrySearch Id="NETFRAMEWORK40FULLFrFrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1036" Name="Install" Type="raw" /> | ||
308 | </Property> | ||
309 | </Fragment> | ||
310 | |||
311 | <!-- set to #1 if the .NET Framework 4.0 Full German language pack is installed (not set otherwise) --> | ||
312 | <Fragment> | ||
313 | <Property Id="NETFRAMEWORK40FULL_DE_DE_LANGPACK" Secure="yes"> | ||
314 | <RegistrySearch Id="NETFRAMEWORK40FULLDeDeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1031" Name="Install" Type="raw" /> | ||
315 | </Property> | ||
316 | </Fragment> | ||
317 | |||
318 | <!-- set to #1 if the .NET Framework 4.0 Full Greek language pack is installed (not set otherwise) --> | ||
319 | <Fragment> | ||
320 | <Property Id="NETFRAMEWORK40FULL_EL_GR_LANGPACK" Secure="yes"> | ||
321 | <RegistrySearch Id="NETFRAMEWORK40FULLElGrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1032" Name="Install" Type="raw" /> | ||
322 | </Property> | ||
323 | </Fragment> | ||
324 | |||
325 | <!-- set to #1 if the .NET Framework 4.0 Full Hebrew language pack is installed (not set otherwise) --> | ||
326 | <Fragment> | ||
327 | <Property Id="NETFRAMEWORK40FULL_HE_IL_LANGPACK" Secure="yes"> | ||
328 | <RegistrySearch Id="NETFRAMEWORK40FULLHeIlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1037" Name="Install" Type="raw" /> | ||
329 | </Property> | ||
330 | </Fragment> | ||
331 | |||
332 | <!-- set to #1 if the .NET Framework 4.0 Full Hungarian language pack is installed (not set otherwise) --> | ||
333 | <Fragment> | ||
334 | <Property Id="NETFRAMEWORK40FULL_HU_HU_LANGPACK" Secure="yes"> | ||
335 | <RegistrySearch Id="NETFRAMEWORK40FULLHuHuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1038" Name="Install" Type="raw" /> | ||
336 | </Property> | ||
337 | </Fragment> | ||
338 | |||
339 | <!-- set to #1 if the .NET Framework 4.0 Full Italian language pack is installed (not set otherwise) --> | ||
340 | <Fragment> | ||
341 | <Property Id="NETFRAMEWORK40FULL_IT_IT_LANGPACK" Secure="yes"> | ||
342 | <RegistrySearch Id="NETFRAMEWORK40FULLItItLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1040" Name="Install" Type="raw" /> | ||
343 | </Property> | ||
344 | </Fragment> | ||
345 | |||
346 | <!-- set to #1 if the .NET Framework 4.0 Full Japanese language pack is installed (not set otherwise) --> | ||
347 | <Fragment> | ||
348 | <Property Id="NETFRAMEWORK40FULL_JA_JP_LANGPACK" Secure="yes"> | ||
349 | <RegistrySearch Id="NETFRAMEWORK40FULLJaJpLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1041" Name="Install" Type="raw" /> | ||
350 | </Property> | ||
351 | </Fragment> | ||
352 | |||
353 | <!-- set to #1 if the .NET Framework 4.0 Full Korean language pack is installed (not set otherwise) --> | ||
354 | <Fragment> | ||
355 | <Property Id="NETFRAMEWORK40FULL_KO_KR_LANGPACK" Secure="yes"> | ||
356 | <RegistrySearch Id="NETFRAMEWORK40FULLKoKrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1042" Name="Install" Type="raw" /> | ||
357 | </Property> | ||
358 | </Fragment> | ||
359 | |||
360 | <!-- set to #1 if the .NET Framework 4.0 Full Norwegian language pack is installed (not set otherwise) --> | ||
361 | <Fragment> | ||
362 | <Property Id="NETFRAMEWORK40FULL_NB_NO_LANGPACK" Secure="yes"> | ||
363 | <RegistrySearch Id="NETFRAMEWORK40FULLNbNoLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1044" Name="Install" Type="raw" /> | ||
364 | </Property> | ||
365 | </Fragment> | ||
366 | |||
367 | <!-- set to #1 if the .NET Framework 4.0 Full Polish language pack is installed (not set otherwise) --> | ||
368 | <Fragment> | ||
369 | <Property Id="NETFRAMEWORK40FULL_PL_PL_LANGPACK" Secure="yes"> | ||
370 | <RegistrySearch Id="NETFRAMEWORK40FULLPlPlLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1045" Name="Install" Type="raw" /> | ||
371 | </Property> | ||
372 | </Fragment> | ||
373 | |||
374 | <!-- set to #1 if the .NET Framework 4.0 Full Portuguese (Brazil) language pack is installed (not set otherwise) --> | ||
375 | <Fragment> | ||
376 | <Property Id="NETFRAMEWORK40FULL_PT_BR_LANGPACK" Secure="yes"> | ||
377 | <RegistrySearch Id="NETFRAMEWORK40FULLPtBrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1046" Name="Install" Type="raw" /> | ||
378 | </Property> | ||
379 | </Fragment> | ||
380 | |||
381 | <!-- set to #1 if the .NET Framework 4.0 Full Portuguese (Portugal) language pack is installed (not set otherwise) --> | ||
382 | <Fragment> | ||
383 | <Property Id="NETFRAMEWORK40FULL_PT_PT_LANGPACK" Secure="yes"> | ||
384 | <RegistrySearch Id="NETFRAMEWORK40FULLPtPtLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\2070" Name="Install" Type="raw" /> | ||
385 | </Property> | ||
386 | </Fragment> | ||
387 | |||
388 | <!-- set to #1 if the .NET Framework 4.0 Full Russian language pack is installed (not set otherwise) --> | ||
389 | <Fragment> | ||
390 | <Property Id="NETFRAMEWORK40FULL_RU_RU_LANGPACK" Secure="yes"> | ||
391 | <RegistrySearch Id="NETFRAMEWORK40FULLRuRuLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1049" Name="Install" Type="raw" /> | ||
392 | </Property> | ||
393 | </Fragment> | ||
394 | |||
395 | <!-- set to #1 if the .NET Framework 4.0 Full Spanish language pack is installed (not set otherwise) --> | ||
396 | <Fragment> | ||
397 | <Property Id="NETFRAMEWORK40FULL_ES_ES_LANGPACK" Secure="yes"> | ||
398 | <RegistrySearch Id="NETFRAMEWORK40FULLEsEsLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\3082" Name="Install" Type="raw" /> | ||
399 | </Property> | ||
400 | </Fragment> | ||
401 | |||
402 | <!-- set to #1 if the .NET Framework 4.0 Full Swedish language pack is installed (not set otherwise) --> | ||
403 | <Fragment> | ||
404 | <Property Id="NETFRAMEWORK40FULL_SV_SE_LANGPACK" Secure="yes"> | ||
405 | <RegistrySearch Id="NETFRAMEWORK40FULLSvSeLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1053" Name="Install" Type="raw" /> | ||
406 | </Property> | ||
407 | </Fragment> | ||
408 | |||
409 | <!-- set to #1 if the .NET Framework 4.0 Full Turkish language pack is installed (not set otherwise) --> | ||
410 | <Fragment> | ||
411 | <Property Id="NETFRAMEWORK40FULL_TR_TR_LANGPACK" Secure="yes"> | ||
412 | <RegistrySearch Id="NETFRAMEWORK40FULLTrTrLp" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full\1055" Name="Install" Type="raw" /> | ||
413 | </Property> | ||
414 | </Fragment> | ||
415 | |||
416 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx451.wxs b/src/ext/NetFx/wixlib/NetFx451.wxs new file mode 100644 index 00000000..88363555 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx451.wxs | |||
@@ -0,0 +1,26 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 4.5/4.5.1 - http://msdn.microsoft.com/en-us/library/5a4x27ek.aspx, http://msdn.microsoft.com/en-us/library/ee942965(v=VS.110).aspx | ||
12 | --> | ||
13 | |||
14 | <?define NetFx451MinRelease = 378675 ?> | ||
15 | <?define NetFx451WebLink = http://go.microsoft.com/fwlink/?LinkId=322115 ?> | ||
16 | <?define NetFx451RedistLink = http://go.microsoft.com/fwlink/?LinkId=322116 ?> | ||
17 | <?define NetFx451EulaLink = http://wixtoolset.org/licenses/netfx451 ?> | ||
18 | <?define NetFx451WebId = NetFx451Web ?> | ||
19 | <?define NetFx451RedistId = NetFx451Redist ?> | ||
20 | |||
21 | <Fragment> | ||
22 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
23 | <Property Id="WIX_IS_NETFRAMEWORK_451_OR_LATER_INSTALLED" Secure="yes" /> | ||
24 | <SetProperty Id="WIX_IS_NETFRAMEWORK_451_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx451MinRelease)"" /> | ||
25 | </Fragment> | ||
26 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx452.wxs b/src/ext/NetFx/wixlib/NetFx452.wxs new file mode 100644 index 00000000..33f79db4 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx452.wxs | |||
@@ -0,0 +1,69 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | |||
8 | Official documentation can be found at the following location: | ||
9 | |||
10 | .NET Framework 4.5/4.5.1/4.5.2 - http://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
11 | --> | ||
12 | |||
13 | <?define NetFx452MinRelease = 379893 ?> | ||
14 | <?define NetFx452WebLink = https://go.microsoft.com/fwlink/?LinkId=397707 ?> | ||
15 | <?define NetFx452RedistLink = https://go.microsoft.com/fwlink/?LinkId=397708 ?> | ||
16 | <?define NetFx452EulaLink = https://wixtoolset.org/licenses/netfx452 ?> | ||
17 | <?define NetFx452WebId = NetFx452Web ?> | ||
18 | <?define NetFx452RedistId = NetFx452Redist ?> | ||
19 | |||
20 | <Fragment> | ||
21 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
22 | <Property Id="WIX_IS_NETFRAMEWORK_452_OR_LATER_INSTALLED" Secure="yes" /> | ||
23 | <SetProperty Id="WIX_IS_NETFRAMEWORK_452_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx452MinRelease)"" /> | ||
24 | </Fragment> | ||
25 | |||
26 | <Fragment> | ||
27 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
28 | |||
29 | <WixVariable Id="NetFx452WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx452MinRelease)" Overridable="yes" /> | ||
30 | <WixVariable Id="NetFx452WebInstallCondition" Value="" Overridable="yes" /> | ||
31 | <WixVariable Id="NetFx452WebPackageDirectory" Value="redist\" Overridable="yes" /> | ||
32 | |||
33 | <PackageGroup Id="$(var.NetFx452WebId)"> | ||
34 | <ExePackage InstallArguments="/q /norestart /log "[NetFx452FullWebLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx452FullWebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx452WebDetectCondition)" InstallCondition="!(wix.NetFx452WebInstallCondition)" Id="$(var.NetFx452WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx452FullWebLog"> | ||
35 | <ExePackagePayload Name="!(wix.NetFx452WebPackageDirectory)NDP452-KB2901954-Web.exe" DownloadUrl="$(var.NetFx452WebLink)" Description="Microsoft .NET Framework 4.5.2 Setup" Hash="90A3A5A57EA8A6508EEE0D129303C7CB012AABF651DD9A6BEFC20DA3BBDB09FC47FD087645051D3D45BFF909DFC6E6039C22C4816FBC793A847E81701248639E" ProductName="Microsoft .NET Framework 4.5.2" Size="1118920" Version="4.5.51209.34209" /> | ||
36 | </ExePackage> | ||
37 | </PackageGroup> | ||
38 | </Fragment> | ||
39 | |||
40 | <Fragment> | ||
41 | <PackageGroup Id="$(var.NetFx452WebId)AsPrereq"> | ||
42 | <PackageGroupRef Id="$(var.NetFx452WebId)" /> | ||
43 | </PackageGroup> | ||
44 | |||
45 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx452WebId)" LicenseUrl="$(var.NetFx452EulaLink)" /> | ||
46 | </Fragment> | ||
47 | |||
48 | <Fragment> | ||
49 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
50 | |||
51 | <WixVariable Id="NetFx452RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx452MinRelease)" Overridable="yes" /> | ||
52 | <WixVariable Id="NetFx452RedistInstallCondition" Value="" Overridable="yes" /> | ||
53 | <WixVariable Id="NetFx452RedistPackageDirectory" Value="redist\" Overridable="yes" /> | ||
54 | |||
55 | <PackageGroup Id="$(var.NetFx452RedistId)"> | ||
56 | <ExePackage InstallArguments="/q /norestart /log "[NetFx452FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx452FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx452RedistDetectCondition)" InstallCondition="!(wix.NetFx452RedistInstallCondition)" Id="$(var.NetFx452RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx452FullLog"> | ||
57 | <ExePackagePayload Name="!(wix.NetFx452RedistPackageDirectory)NDP452-KB2901907-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx452RedistLink)" Description="Microsoft .NET Framework 4.5.2 Setup" Hash="033D457229C4FE6EEA7B1E42A3A39DD4CF6A054C5E996CE036942DD2FE9623FD3A0634BE5DCB88506C1C61BF9FF6076F27B4ECEC38F8CF85603AF018111E584D" ProductName="Microsoft .NET Framework 4.5.2" Size="69999448" Version="4.5.51209.34209" /> | ||
58 | </ExePackage> | ||
59 | </PackageGroup> | ||
60 | </Fragment> | ||
61 | |||
62 | <Fragment> | ||
63 | <PackageGroup Id="$(var.NetFx452RedistId)AsPrereq"> | ||
64 | <PackageGroupRef Id="$(var.NetFx452RedistId)" /> | ||
65 | </PackageGroup> | ||
66 | |||
67 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx452RedistId)" LicenseUrl="$(var.NetFx452EulaLink)" /> | ||
68 | </Fragment> | ||
69 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx46.wxs b/src/ext/NetFx/wixlib/NetFx46.wxs new file mode 100644 index 00000000..cb53be2e --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx46.wxs | |||
@@ -0,0 +1,70 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | |||
9 | Official documentation can be found at the following location: | ||
10 | |||
11 | .NET Framework 4.5/4.5.1/4.5.2/4.6 - http://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
12 | --> | ||
13 | |||
14 | <?define NetFx46MinRelease = 393295 ?> | ||
15 | <?define NetFx46WebLink = https://go.microsoft.com/fwlink/?LinkId=560371 ?> | ||
16 | <?define NetFx46RedistLink = https://go.microsoft.com/fwlink/?LinkId=560369 ?> | ||
17 | <?define NetFx46EulaLink = https://go.microsoft.com/fwlink/?LinkID=558772 ?> | ||
18 | <?define NetFx46WebId = NetFx46Web ?> | ||
19 | <?define NetFx46RedistId = NetFx46Redist ?> | ||
20 | |||
21 | <Fragment> | ||
22 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
23 | <Property Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" Secure="yes" /> | ||
24 | <SetProperty Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx46MinRelease)"" /> | ||
25 | </Fragment> | ||
26 | |||
27 | <Fragment> | ||
28 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
29 | |||
30 | <WixVariable Id="NetFx46WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx46MinRelease)" Overridable="yes" /> | ||
31 | <WixVariable Id="NetFx46WebInstallCondition" Value="" Overridable="yes" /> | ||
32 | <WixVariable Id="NetFx46WebPackageDirectory" Value="redist\" Overridable="yes" /> | ||
33 | |||
34 | <PackageGroup Id="$(var.NetFx46WebId)"> | ||
35 | <ExePackage InstallArguments="/q /norestart /log "[NetFx46FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx46FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx46WebDetectCondition)" InstallCondition="!(wix.NetFx46WebInstallCondition)" Id="$(var.NetFx46WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx46FullLog"> | ||
36 | <ExePackagePayload Name="!(wix.NetFx46WebPackageDirectory)NDP46-KB3045560-Web.exe" DownloadUrl="$(var.NetFx46WebLink)" Description="Microsoft .NET Framework 4.6 Setup" Hash="CAA5F4D4DB0C9DF34252FCB74CF7762214F69D2419865EBC1E6717E6B1348E59A7599A8DECAAB5CEE6974E59D1AE5A749F8C4EC07C8E4C80C90E77B996B3B205" ProductName="Microsoft .NET Framework 4.6" Size="1497400" Version="4.6.81.0" /> | ||
37 | </ExePackage> | ||
38 | </PackageGroup> | ||
39 | </Fragment> | ||
40 | |||
41 | <Fragment> | ||
42 | <PackageGroup Id="$(var.NetFx46WebId)AsPrereq"> | ||
43 | <PackageGroupRef Id="$(var.NetFx46WebId)" /> | ||
44 | </PackageGroup> | ||
45 | |||
46 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx46WebId)" LicenseUrl="$(var.NetFx46EulaLink)" /> | ||
47 | </Fragment> | ||
48 | |||
49 | <Fragment> | ||
50 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
51 | |||
52 | <WixVariable Id="NetFx46RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx46MinRelease)" Overridable="yes" /> | ||
53 | <WixVariable Id="NetFx46RedistInstallCondition" Value="" Overridable="yes" /> | ||
54 | <WixVariable Id="NetFx46RedistPackageDirectory" Value="redist\" Overridable="yes" /> | ||
55 | |||
56 | <PackageGroup Id="$(var.NetFx46RedistId)"> | ||
57 | <ExePackage InstallArguments="/q /norestart /log "[NetFx46FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx46FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx46RedistDetectCondition)" InstallCondition="!(wix.NetFx46RedistInstallCondition)" Id="$(var.NetFx46RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx46FullLog"> | ||
58 | <ExePackagePayload Name="!(wix.NetFx46RedistPackageDirectory)NDP46-KB3045557-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx46RedistLink)" Description="Microsoft .NET Framework 4.6 Setup" Hash="C6FC54F648F822515ADACB4C27E0A6DBD6A3EAF2BA3F069C0002750894ECC453EBED8BC8D4FF2AFD73C7B3445C1DA18D43FE361EA5195AE8522249DF36B84B7E" ProductName="Microsoft .NET Framework 4.6" Size="65444688" Version="4.6.81.0" /> | ||
59 | </ExePackage> | ||
60 | </PackageGroup> | ||
61 | </Fragment> | ||
62 | |||
63 | <Fragment> | ||
64 | <PackageGroup Id="$(var.NetFx46RedistId)AsPrereq"> | ||
65 | <PackageGroupRef Id="$(var.NetFx46RedistId)" /> | ||
66 | </PackageGroup> | ||
67 | |||
68 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx46RedistId)" LicenseUrl="$(var.NetFx46EulaLink)" /> | ||
69 | </Fragment> | ||
70 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx461.wxs b/src/ext/NetFx/wixlib/NetFx461.wxs new file mode 100644 index 00000000..95cc2876 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx461.wxs | |||
@@ -0,0 +1,69 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | |||
8 | Official documentation can be found at the following location: | ||
9 | |||
10 | .NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1 - http://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
11 | --> | ||
12 | |||
13 | <?define NetFx461MinRelease = 394254 ?> | ||
14 | <?define NetFx461WebLink = https://go.microsoft.com/fwlink/?LinkId=671728 ?> | ||
15 | <?define NetFx461RedistLink = https://go.microsoft.com/fwlink/?LinkId=671743 ?> | ||
16 | <?define NetFx461EulaLink = https://referencesource.microsoft.com/license.html ?> | ||
17 | <?define NetFx461WebId = NetFx461Web ?> | ||
18 | <?define NetFx461RedistId = NetFx461Redist ?> | ||
19 | |||
20 | <Fragment> | ||
21 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
22 | <Property Id="WIX_IS_NETFRAMEWORK_461_OR_LATER_INSTALLED" Secure="yes" /> | ||
23 | <SetProperty Id="WIX_IS_NETFRAMEWORK_461_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx461MinRelease)"" /> | ||
24 | </Fragment> | ||
25 | |||
26 | <Fragment> | ||
27 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
28 | |||
29 | <WixVariable Id="NetFx461WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx461MinRelease)" Overridable="yes" /> | ||
30 | <WixVariable Id="NetFx461WebInstallCondition" Value="" Overridable="yes" /> | ||
31 | <WixVariable Id="NetFx461WebPackageDirectory" Value="redist\" Overridable="yes" /> | ||
32 | |||
33 | <PackageGroup Id="$(var.NetFx461WebId)"> | ||
34 | <ExePackage InstallArguments="/q /norestart /log "[NetFx461FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx461FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx461WebDetectCondition)" InstallCondition="!(wix.NetFx461WebInstallCondition)" Id="$(var.NetFx461WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx461FullLog"> | ||
35 | <ExePackagePayload Name="!(wix.NetFx461WebPackageDirectory)NDP461-KB3102438-Web.exe" DownloadUrl="$(var.NetFx461WebLink)" Description="Microsoft .NET Framework 4.6.1 Setup" Hash="97C4DD638E2E0324D60BDD1D7BE85603EDBF969898469A524FB271EBA5E22B78CA67DB1F568F5C45393381F1E76408C366AD4A68A7BB00E23D1FB820E67DE99E" ProductName="Microsoft .NET Framework 4.6.1" Size="1424328" Version="4.6.1055.0" /> | ||
36 | </ExePackage> | ||
37 | </PackageGroup> | ||
38 | </Fragment> | ||
39 | |||
40 | <Fragment> | ||
41 | <PackageGroup Id="$(var.NetFx461WebId)AsPrereq"> | ||
42 | <PackageGroupRef Id="$(var.NetFx461WebId)" /> | ||
43 | </PackageGroup> | ||
44 | |||
45 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx461WebId)" LicenseUrl="$(var.NetFx461EulaLink)" /> | ||
46 | </Fragment> | ||
47 | |||
48 | <Fragment> | ||
49 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
50 | |||
51 | <WixVariable Id="NetFx461RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx461MinRelease)" Overridable="yes" /> | ||
52 | <WixVariable Id="NetFx461RedistInstallCondition" Value="" Overridable="yes" /> | ||
53 | <WixVariable Id="NetFx461RedistPackageDirectory" Value="redist\" Overridable="yes" /> | ||
54 | |||
55 | <PackageGroup Id="$(var.NetFx461RedistId)"> | ||
56 | <ExePackage InstallArguments="/q /norestart /log "[NetFx461FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx461FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx461RedistDetectCondition)" InstallCondition="!(wix.NetFx461RedistInstallCondition)" Id="$(var.NetFx461RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx461FullLog"> | ||
57 | <ExePackagePayload Name="!(wix.NetFx461RedistPackageDirectory)NDP461-KB3102436-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx461RedistLink)" Description="Microsoft .NET Framework 4.6.1 Setup" Hash="43BEF5EB278CF0954EAE1A6FEEC5A9852B932270508DD10647B9EA32DFD3832ECB58172B28707216709705BF0013FCEBB0B39DB31E38786FC2DAE219622EA00F" ProductName="Microsoft .NET Framework 4.6.1" Size="67681000" Version="4.6.1055.0" /> | ||
58 | </ExePackage> | ||
59 | </PackageGroup> | ||
60 | </Fragment> | ||
61 | |||
62 | <Fragment> | ||
63 | <PackageGroup Id="$(var.NetFx461RedistId)AsPrereq"> | ||
64 | <PackageGroupRef Id="$(var.NetFx461RedistId)" /> | ||
65 | </PackageGroup> | ||
66 | |||
67 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx461RedistId)" LicenseUrl="$(var.NetFx461EulaLink)" /> | ||
68 | </Fragment> | ||
69 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx462.wxs b/src/ext/NetFx/wixlib/NetFx462.wxs new file mode 100644 index 00000000..146bae5f --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx462.wxs | |||
@@ -0,0 +1,69 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | |||
8 | Official documentation can be found at the following location: | ||
9 | |||
10 | .NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2 - http://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
11 | --> | ||
12 | |||
13 | <?define NetFx462MinRelease = 394802 ?> | ||
14 | <?define NetFx462WebLink = https://go.microsoft.com/fwlink/?LinkId=780596 ?> | ||
15 | <?define NetFx462RedistLink = https://go.microsoft.com/fwlink/?LinkId=780600 ?> | ||
16 | <?define NetFx462EulaLink = https://referencesource.microsoft.com/license.html ?> | ||
17 | <?define NetFx462WebId = NetFx462Web ?> | ||
18 | <?define NetFx462RedistId = NetFx462Redist ?> | ||
19 | |||
20 | <Fragment> | ||
21 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
22 | <Property Id="WIX_IS_NETFRAMEWORK_462_OR_LATER_INSTALLED" Secure="yes" /> | ||
23 | <SetProperty Id="WIX_IS_NETFRAMEWORK_462_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx462MinRelease)"" /> | ||
24 | </Fragment> | ||
25 | |||
26 | <Fragment> | ||
27 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
28 | |||
29 | <WixVariable Id="NetFx462WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx462MinRelease)" Overridable="yes" /> | ||
30 | <WixVariable Id="NetFx462WebInstallCondition" Value="" Overridable="yes" /> | ||
31 | <WixVariable Id="NetFx462WebPackageDirectory" Value="redist\" Overridable="yes" /> | ||
32 | |||
33 | <PackageGroup Id="$(var.NetFx462WebId)"> | ||
34 | <ExePackage InstallArguments="/q /norestart /log "[NetFx462FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx462FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx462WebDetectCondition)" InstallCondition="!(wix.NetFx462WebInstallCondition)" Id="$(var.NetFx462WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx462FullLog"> | ||
35 | <ExePackagePayload Name="!(wix.NetFx462WebPackageDirectory)NDP462-KB3151802-Web.exe" DownloadUrl="$(var.NetFx462WebLink)" Description="Microsoft .NET Framework 4.6.2 Setup" Hash="72CC8904EA9AC4248874FD888E2C63737DFFF920E4002EB1426318EFD2650D1D5055DFC80C1F398278F7246A3827FC0ED3C044471C67A40CDE66D3796F854DCE" ProductName="Microsoft .NET Framework 4.6.2" Size="1408232" Version="4.6.1590.0" /> | ||
36 | </ExePackage> | ||
37 | </PackageGroup> | ||
38 | </Fragment> | ||
39 | |||
40 | <Fragment> | ||
41 | <PackageGroup Id="$(var.NetFx462WebId)AsPrereq"> | ||
42 | <PackageGroupRef Id="$(var.NetFx462WebId)" /> | ||
43 | </PackageGroup> | ||
44 | |||
45 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx462WebId)" LicenseUrl="$(var.NetFx462EulaLink)" /> | ||
46 | </Fragment> | ||
47 | |||
48 | <Fragment> | ||
49 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
50 | |||
51 | <WixVariable Id="NetFx462RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx462MinRelease)" Overridable="yes" /> | ||
52 | <WixVariable Id="NetFx462RedistInstallCondition" Value="" Overridable="yes" /> | ||
53 | <WixVariable Id="NetFx462RedistPackageDirectory" Value="redist\" Overridable="yes" /> | ||
54 | |||
55 | <PackageGroup Id="$(var.NetFx462RedistId)"> | ||
56 | <ExePackage InstallArguments="/q /norestart /log "[NetFx462FullLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx462FullLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx462RedistDetectCondition)" InstallCondition="!(wix.NetFx462RedistInstallCondition)" Id="$(var.NetFx462RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx462FullLog"> | ||
57 | <ExePackagePayload Name="!(wix.NetFx462RedistPackageDirectory)NDP462-KB3151800-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx462RedistLink)" Description="Microsoft .NET Framework 4.6.2 Setup" Hash="5EFE9C21F355B91D12CB6B328737E8D01B6A7F8F815C477F6971A2267381B943BE6245E4B0021376EBE91C794812E93C7D4108348D837B2866FD86475F012908" ProductName="Microsoft .NET Framework 4.6.2" Size="62005552" Version="4.6.1590.0" /> | ||
58 | </ExePackage> | ||
59 | </PackageGroup> | ||
60 | </Fragment> | ||
61 | |||
62 | <Fragment> | ||
63 | <PackageGroup Id="$(var.NetFx462RedistId)AsPrereq"> | ||
64 | <PackageGroupRef Id="$(var.NetFx462RedistId)" /> | ||
65 | </PackageGroup> | ||
66 | |||
67 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx462RedistId)" LicenseUrl="$(var.NetFx462EulaLink)" /> | ||
68 | </Fragment> | ||
69 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx47.wxs b/src/ext/NetFx/wixlib/NetFx47.wxs new file mode 100644 index 00000000..84f4a221 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx47.wxs | |||
@@ -0,0 +1,20 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | |||
8 | Official documentation can be found at the following location: | ||
9 | |||
10 | .NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7 - http://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
11 | --> | ||
12 | |||
13 | <?define NetFx47MinRelease = 460798 ?> | ||
14 | |||
15 | <Fragment> | ||
16 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
17 | <Property Id="WIX_IS_NETFRAMEWORK_47_OR_LATER_INSTALLED" Secure="yes" /> | ||
18 | <SetProperty Id="WIX_IS_NETFRAMEWORK_47_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx47MinRelease)"" /> | ||
19 | </Fragment> | ||
20 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx471.wxs b/src/ext/NetFx/wixlib/NetFx471.wxs new file mode 100644 index 00000000..b5f825ab --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx471.wxs | |||
@@ -0,0 +1,20 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | |||
8 | Official documentation can be found at the following location: | ||
9 | |||
10 | .NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1 - http://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
11 | --> | ||
12 | |||
13 | <?define NetFx471MinRelease = 461308 ?> | ||
14 | |||
15 | <Fragment> | ||
16 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
17 | <Property Id="WIX_IS_NETFRAMEWORK_471_OR_LATER_INSTALLED" Secure="yes" /> | ||
18 | <SetProperty Id="WIX_IS_NETFRAMEWORK_471_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx471MinRelease)"" /> | ||
19 | </Fragment> | ||
20 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx472.wxs b/src/ext/NetFx/wixlib/NetFx472.wxs new file mode 100644 index 00000000..57584a9e --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx472.wxs | |||
@@ -0,0 +1,67 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | Official documentation can be found at the following location: | ||
8 | .NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2 - https://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
9 | --> | ||
10 | |||
11 | <?define NetFx472MinRelease = 461808 ?> | ||
12 | <?define NetFx472WebLink = https://go.microsoft.com/fwlink/?LinkId=863262 ?> | ||
13 | <?define NetFx472RedistLink = https://go.microsoft.com/fwlink/?LinkId=863258 ?> | ||
14 | <?define NetFx472EulaLink = https://referencesource.microsoft.com/license.html ?> | ||
15 | <?define NetFx472WebId = NetFx472Web ?> | ||
16 | <?define NetFx472RedistId = NetFx472Redist ?> | ||
17 | |||
18 | <Fragment> | ||
19 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
20 | <Property Id="WIX_IS_NETFRAMEWORK_472_OR_LATER_INSTALLED" Secure="yes" /> | ||
21 | <SetProperty Id="WIX_IS_NETFRAMEWORK_472_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx472MinRelease)"" /> | ||
22 | </Fragment> | ||
23 | |||
24 | <Fragment> | ||
25 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
26 | |||
27 | <WixVariable Id="NetFx472WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx472MinRelease)" Overridable="yes" /> | ||
28 | <WixVariable Id="NetFx472WebInstallCondition" Value="" Overridable="yes" /> | ||
29 | <WixVariable Id="NetFx472WebPackageDirectory" Value="redist\" Overridable="yes" /> | ||
30 | |||
31 | <PackageGroup Id="$(var.NetFx472WebId)"> | ||
32 | <ExePackage InstallArguments="/q /norestart /log "[NetFx472WebLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx472WebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx472WebDetectCondition)" InstallCondition="!(wix.NetFx472WebInstallCondition)" Id="$(var.NetFx472WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx472WebLog"> | ||
33 | <ExePackagePayload Name="!(wix.NetFx472WebPackageDirectory)NDP472-KB4054531-Web.exe" DownloadUrl="$(var.NetFx472WebLink)" Description="Microsoft .NET Framework 4.7.2 Setup" Hash="213CDEE35D320FE126CB64FE59963DB355062A14592E0B2FC4D45C2EDEF5F6A91305D0674D27152869202E3440090DFC207A0C5EB14D812F61E437907A81887E" ProductName="Microsoft .NET Framework 4.7.2" Size="1399888" Version="4.7.3081.0" /> | ||
34 | </ExePackage> | ||
35 | </PackageGroup> | ||
36 | </Fragment> | ||
37 | |||
38 | <Fragment> | ||
39 | <PackageGroup Id="$(var.NetFx472WebId)AsPrereq"> | ||
40 | <PackageGroupRef Id="$(var.NetFx472WebId)" /> | ||
41 | </PackageGroup> | ||
42 | |||
43 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx472WebId)" LicenseUrl="$(var.NetFx472EulaLink)" /> | ||
44 | </Fragment> | ||
45 | |||
46 | <Fragment> | ||
47 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
48 | |||
49 | <WixVariable Id="NetFx472RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx472MinRelease)" Overridable="yes" /> | ||
50 | <WixVariable Id="NetFx472RedistInstallCondition" Value="" Overridable="yes" /> | ||
51 | <WixVariable Id="NetFx472RedistPackageDirectory" Value="redist\" Overridable="yes" /> | ||
52 | |||
53 | <PackageGroup Id="$(var.NetFx472RedistId)"> | ||
54 | <ExePackage InstallArguments="/q /norestart /log "[NetFx472RedistLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx472RedistLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx472RedistDetectCondition)" InstallCondition="!(wix.NetFx472RedistInstallCondition)" Id="$(var.NetFx472RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx472RedistLog"> | ||
55 | <ExePackagePayload Name="!(wix.NetFx472RedistPackageDirectory)NDP472-KB4054530-x86-x64-AllOS-ENU.exe" DownloadUrl="$(var.NetFx472RedistLink)" Description="Microsoft .NET Framework 4.7.2 Setup" Hash="F4EA32D8189DD269FF02D68B39D7DE866AE5F46EEA5A71BF8F4715FB0E4F8B7AC64B274DFA7BFF69B52C719E65256906C8D92FDD355F52C977175AE3E1919098" ProductName="Microsoft .NET Framework 4.7.2" Size="83940592" Version="4.7.3081.0" /> | ||
56 | </ExePackage> | ||
57 | </PackageGroup> | ||
58 | </Fragment> | ||
59 | |||
60 | <Fragment> | ||
61 | <PackageGroup Id="$(var.NetFx472RedistId)AsPrereq"> | ||
62 | <PackageGroupRef Id="$(var.NetFx472RedistId)" /> | ||
63 | </PackageGroup> | ||
64 | |||
65 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx472RedistId)" LicenseUrl="$(var.NetFx472EulaLink)" /> | ||
66 | </Fragment> | ||
67 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFx48.wxs b/src/ext/NetFx/wixlib/NetFx48.wxs new file mode 100644 index 00000000..bfca5092 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFx48.wxs | |||
@@ -0,0 +1,67 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"> | ||
4 | |||
5 | <!-- | ||
6 | .NET Framework installation state properties | ||
7 | Official documentation can be found at the following location: | ||
8 | .NET Framework 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2/4.7/4.7.1/4.7.2/4.8 - https://msdn.microsoft.com/en-us/library/w0x726c2(v=vs.110).aspx | ||
9 | --> | ||
10 | |||
11 | <?define NetFx48MinRelease = 528040 ?> | ||
12 | <?define NetFx48WebLink = https://go.microsoft.com/fwlink/?LinkId=2085155 ?> | ||
13 | <?define NetFx48RedistLink = https://go.microsoft.com/fwlink/?linkid=2088631 ?> | ||
14 | <?define NetFx48EulaLink = https://referencesource.microsoft.com/license.html ?> | ||
15 | <?define NetFx48WebId = NetFx48Web ?> | ||
16 | <?define NetFx48RedistId = NetFx48Redist ?> | ||
17 | |||
18 | <Fragment> | ||
19 | <PropertyRef Id="WIXNETFX4RELEASEINSTALLED" /> | ||
20 | <Property Id="WIX_IS_NETFRAMEWORK_48_OR_LATER_INSTALLED" Secure="yes" /> | ||
21 | <SetProperty Id="WIX_IS_NETFRAMEWORK_48_OR_LATER_INSTALLED" Value="1" After="AppSearch" Condition="WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx48MinRelease)"" /> | ||
22 | </Fragment> | ||
23 | |||
24 | <Fragment> | ||
25 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
26 | |||
27 | <WixVariable Id="NetFx48WebDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx48MinRelease)" Overridable="yes" /> | ||
28 | <WixVariable Id="NetFx48WebInstallCondition" Value="" Overridable="yes" /> | ||
29 | <WixVariable Id="NetFx48WebPackageDirectory" Value="redist\" Overridable="yes" /> | ||
30 | |||
31 | <PackageGroup Id="$(var.NetFx48WebId)"> | ||
32 | <ExePackage InstallArguments="/q /norestart /log "[NetFx48WebLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx48WebLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx48WebDetectCondition)" InstallCondition="!(wix.NetFx48WebInstallCondition)" Id="$(var.NetFx48WebId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx48WebLog"> | ||
33 | <ExePackagePayload Name="!(wix.NetFx48WebPackageDirectory)ndp48-web.exe" DownloadUrl="$(var.NetFx48WebLink)" Description="Microsoft .NET Framework 4.8 Setup" Hash="B09A3F6802741BD5E4A9598FF3F890FEB760D865C98F33B3CF6951C3ADE396C9819D6ECA562CAD6C339C53FC1AF88F7936DD09CBBAC22EE16FC67BAE076646B6" ProductName="Microsoft .NET Framework 4.8" Size="1443272" Version="4.8.4115.0" /> | ||
34 | </ExePackage> | ||
35 | </PackageGroup> | ||
36 | </Fragment> | ||
37 | |||
38 | <Fragment> | ||
39 | <PackageGroup Id="$(var.NetFx48WebId)AsPrereq"> | ||
40 | <PackageGroupRef Id="$(var.NetFx48WebId)" /> | ||
41 | </PackageGroup> | ||
42 | |||
43 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx48WebId)" LicenseUrl="$(var.NetFx48EulaLink)" /> | ||
44 | </Fragment> | ||
45 | |||
46 | <Fragment> | ||
47 | <util:RegistrySearchRef Id="NETFRAMEWORK45" /> | ||
48 | |||
49 | <WixVariable Id="NetFx48RedistDetectCondition" Value="NETFRAMEWORK45 >= $(var.NetFx48MinRelease)" Overridable="yes" /> | ||
50 | <WixVariable Id="NetFx48RedistInstallCondition" Value="" Overridable="yes" /> | ||
51 | <WixVariable Id="NetFx48RedistPackageDirectory" Value="redist\" Overridable="yes" /> | ||
52 | |||
53 | <PackageGroup Id="$(var.NetFx48RedistId)"> | ||
54 | <ExePackage InstallArguments="/q /norestart /log "[NetFx48RedistLog].html"" UninstallArguments="/uninstall /q /norestart /log "[NetFx48RedistLog].html"" PerMachine="yes" DetectCondition="!(wix.NetFx48RedistDetectCondition)" InstallCondition="!(wix.NetFx48RedistInstallCondition)" Id="$(var.NetFx48RedistId)" Vital="yes" Permanent="yes" Protocol="netfx4" LogPathVariable="NetFx48RedistLog"> | ||
55 | <ExePackagePayload Name="!(wix.NetFx48RedistPackageDirectory)ndp48-x86-x64-allos-enu.exe" DownloadUrl="$(var.NetFx48RedistLink)" Description="Microsoft .NET Framework 4.8 Setup" Hash="DE7FD1B245BAAAC3A2BA1C2C650492AB71EB689902E281DDA02B069A441BAF9B1CF067D596C2E67C27EB58C341F572D8E7D481EC5D6E3A4CFB8D0C9AA7B55181" ProductName="Microsoft .NET Framework 4.8" Size="121319368" Version="4.8.4115.0" /> | ||
56 | </ExePackage> | ||
57 | </PackageGroup> | ||
58 | </Fragment> | ||
59 | |||
60 | <Fragment> | ||
61 | <PackageGroup Id="$(var.NetFx48RedistId)AsPrereq"> | ||
62 | <PackageGroupRef Id="$(var.NetFx48RedistId)" /> | ||
63 | </PackageGroup> | ||
64 | |||
65 | <bal:ManagedBootstrapperApplicationPrereqInformation PackageId="$(var.NetFx48RedistId)" LicenseUrl="$(var.NetFx48EulaLink)" /> | ||
66 | </Fragment> | ||
67 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFxExtension.wxs b/src/ext/NetFx/wixlib/NetFxExtension.wxs new file mode 100644 index 00000000..63c79235 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFxExtension.wxs | |||
@@ -0,0 +1,38 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <!-- | ||
7 | .NET Framework installation state properties | ||
8 | --> | ||
9 | |||
10 | <!-- Location of .NET Framework redistributable install root directory --> | ||
11 | <Fragment> | ||
12 | <Property Id="NETFRAMEWORKINSTALLROOTDIR" Secure="yes"> | ||
13 | <RegistrySearch Id="NetFxInstallRootSearch" Type="raw" Root="HKLM" Key="Software\Microsoft\.NETFramework" Name="InstallRoot" /> | ||
14 | </Property> | ||
15 | </Fragment> | ||
16 | |||
17 | <!-- location of the Windows SDK current active version installation root --> | ||
18 | <Fragment> | ||
19 | <Property Id="WINDOWSSDKCURRENTVERSIONDIR" Secure="yes"> | ||
20 | <RegistrySearch Id="WindowsSdkCurrentVersionDir" Root="HKLM" Key="Software\Microsoft\Microsoft SDKs\Windows" Name="CurrentInstallFolder" Type="raw" /> | ||
21 | </Property> | ||
22 | </Fragment> | ||
23 | |||
24 | <!-- The Windows SDK current active version --> | ||
25 | <Fragment> | ||
26 | <Property Id="WINDOWSSDKCURRENTVERSION" Secure="yes"> | ||
27 | <RegistrySearch Id="WindowsSdkCurrentVersion" Root="HKLM" Key="Software\Microsoft\Microsoft SDKs\Windows" Name="CurrentVersion" Type="raw" /> | ||
28 | </Property> | ||
29 | </Fragment> | ||
30 | |||
31 | <!-- Release value of .NET 4.5 and later --> | ||
32 | <Fragment> | ||
33 | <Property Id="WIXNETFX4RELEASEINSTALLED" Secure="yes"> | ||
34 | <RegistrySearch Id="NetFx4ReleaseInstalled" Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" Name="Release" Type="raw" /> | ||
35 | </Property> | ||
36 | </Fragment> | ||
37 | |||
38 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi b/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi new file mode 100644 index 00000000..7bd727c5 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi | |||
@@ -0,0 +1,28 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | |||
6 | <?include caDecor.wxi ?> | ||
7 | |||
8 | <Fragment> | ||
9 | <CustomAction Id="$(var.Prefix)NetFxScheduleNativeImage$(var.Suffix)" DllEntry="SchedNetFx" Execute="immediate" Return="check" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | ||
10 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageInstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="deferred" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | ||
11 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="commit" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | ||
12 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="deferred" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | ||
13 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="commit" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | ||
14 | |||
15 | <InstallExecuteSequence> | ||
16 | <Custom Action="$(var.Prefix)NetFxScheduleNativeImage$(var.Suffix)" Before="InstallFiles" Overridable="yes" /> | ||
17 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" After="MsiPublishAssemblies" Overridable="yes" Condition="RollbackDisabled <> 1" /> | ||
18 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled = 1" /> | ||
19 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled <> 1" /> | ||
20 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageInstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled = 1" /> | ||
21 | </InstallExecuteSequence> | ||
22 | </Fragment> | ||
23 | |||
24 | <!-- NetFx Custom Action DLL Definitions --> | ||
25 | <Fragment> | ||
26 | <Binary Id="$(var.Prefix)NetFxCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))netfxca.dll" /> | ||
27 | </Fragment> | ||
28 | </Include> | ||
diff --git a/src/ext/NetFx/wixlib/NetFxExtension_arm64.wxs b/src/ext/NetFx/wixlib/NetFxExtension_arm64.wxs new file mode 100644 index 00000000..a0492fde --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFxExtension_arm64.wxs | |||
@@ -0,0 +1,7 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | <?define platform=arm64 ?> | ||
6 | <?include NetfxExtension_Platform.wxi ?> | ||
7 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFxExtension_x64.wxs b/src/ext/NetFx/wixlib/NetFxExtension_x64.wxs new file mode 100644 index 00000000..81c9d768 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFxExtension_x64.wxs | |||
@@ -0,0 +1,7 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | <?define platform=x64 ?> | ||
6 | <?include NetfxExtension_Platform.wxi ?> | ||
7 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/NetFxExtension_x86.wxs b/src/ext/NetFx/wixlib/NetFxExtension_x86.wxs new file mode 100644 index 00000000..b8ad1927 --- /dev/null +++ b/src/ext/NetFx/wixlib/NetFxExtension_x86.wxs | |||
@@ -0,0 +1,7 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | <?define platform=x86 ?> | ||
6 | <?include NetfxExtension_Platform.wxi ?> | ||
7 | </Wix> | ||
diff --git a/src/ext/NetFx/wixlib/caDecor.wxi b/src/ext/NetFx/wixlib/caDecor.wxi new file mode 100644 index 00000000..b1711518 --- /dev/null +++ b/src/ext/NetFx/wixlib/caDecor.wxi | |||
@@ -0,0 +1,39 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | |||
3 | |||
4 | <Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
5 | <?ifdef Prefix ?> | ||
6 | <?undef Prefix ?> | ||
7 | <?endif?> | ||
8 | |||
9 | <?define Prefix="Wix4" ?> | ||
10 | |||
11 | <?ifndef platform ?> | ||
12 | <?define platform="x86" ?> | ||
13 | <?endif?> | ||
14 | |||
15 | <?if $(var.platform)="" ?> | ||
16 | <?undef platform ?> | ||
17 | <?define platform="x86" ?> | ||
18 | <?endif?> | ||
19 | |||
20 | <?ifdef Suffix ?> | ||
21 | <?undef Suffix ?> | ||
22 | <?endif?> | ||
23 | |||
24 | <?if $(var.platform)~="x86" ?> | ||
25 | <?define Suffix="_X86" ?> | ||
26 | <?endif?> | ||
27 | |||
28 | <?if $(var.platform)~="x64" ?> | ||
29 | <?define Suffix="_X64" ?> | ||
30 | <?endif?> | ||
31 | |||
32 | <?if $(var.platform)~="arm" ?> | ||
33 | <?define Suffix="_A32" ?> | ||
34 | <?endif?> | ||
35 | |||
36 | <?if $(var.platform)~="arm64" ?> | ||
37 | <?define Suffix="_A64" ?> | ||
38 | <?endif?> | ||
39 | </Include> | ||
diff --git a/src/ext/NetFx/wixlib/netfx.v3.ncrunchproject b/src/ext/NetFx/wixlib/netfx.v3.ncrunchproject new file mode 100644 index 00000000..319cd523 --- /dev/null +++ b/src/ext/NetFx/wixlib/netfx.v3.ncrunchproject | |||
@@ -0,0 +1,5 @@ | |||
1 | <ProjectConfiguration> | ||
2 | <Settings> | ||
3 | <IgnoreThisComponentCompletely>True</IgnoreThisComponentCompletely> | ||
4 | </Settings> | ||
5 | </ProjectConfiguration> \ No newline at end of file | ||
diff --git a/src/ext/NetFx/wixlib/netfx.wixproj b/src/ext/NetFx/wixlib/netfx.wixproj new file mode 100644 index 00000000..937ed0d4 --- /dev/null +++ b/src/ext/NetFx/wixlib/netfx.wixproj | |||
@@ -0,0 +1,32 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project Sdk="WixToolset.Sdk"> | ||
5 | |||
6 | <PropertyGroup> | ||
7 | <OutputType>Library</OutputType> | ||
8 | <BindFiles>true</BindFiles> | ||
9 | </PropertyGroup> | ||
10 | |||
11 | <ItemGroup> | ||
12 | <BindInputPaths Include="$(OutputPath)x86" BindName='x86' /> | ||
13 | <BindInputPaths Include="$(OutputPath)x64" BindName='x64' /> | ||
14 | <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' /> | ||
15 | </ItemGroup> | ||
16 | |||
17 | <ItemGroup> | ||
18 | <ProjectReference Include="..\ca\netfxca.vcxproj" Properties="Platform=ARM64" ReferenceOutputAssembly="false" /> | ||
19 | <ProjectReference Include="..\ca\netfxca.vcxproj" Properties="Platform=x86" ReferenceOutputAssembly="false" /> | ||
20 | <ProjectReference Include="..\ca\netfxca.vcxproj" Properties="Platform=x64" ReferenceOutputAssembly="false" /> | ||
21 | </ItemGroup> | ||
22 | |||
23 | <ItemGroup> | ||
24 | <PackageReference Include="WixToolset.Bal.wixext" Version="4.0.*" /> | ||
25 | <PackageReference Include="WixToolset.Util.wixext" Version="4.0.*" /> | ||
26 | </ItemGroup> | ||
27 | |||
28 | <ItemGroup> | ||
29 | <PackageReference Include="Nerdbank.GitVersioning" Version="3.3.37" PrivateAssets="All" /> | ||
30 | </ItemGroup> | ||
31 | |||
32 | </Project> | ||