diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-05-11 07:48:54 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-05-11 07:48:54 -0700 |
| commit | 1ada7ea116791710f3529c806b8aececd4cfa61d (patch) | |
| tree | 8350cea7bfd987a3a5807cc498c193ee055f969c /src | |
| parent | 32112ecd939d36cd14603f09283f825dea4f07c8 (diff) | |
| parent | 7bdd5e9159b298e0411afa689a06c44e36e293cd (diff) | |
| download | wix-1ada7ea116791710f3529c806b8aececd4cfa61d.tar.gz wix-1ada7ea116791710f3529c806b8aececd4cfa61d.tar.bz2 wix-1ada7ea116791710f3529c806b8aececd4cfa61d.zip | |
Merge NetFx.wixext
Diffstat (limited to 'src')
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> | ||
