diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2020-05-28 23:00:05 +1000 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2020-05-28 23:10:12 +1000 |
| commit | ef0dbdc18c4335fef395fb954845031ea90503be (patch) | |
| tree | 1d9bec91f1fbef5b24cdfdb45a05ef2ee5e6caee /src/WixToolset.BuildTasks | |
| parent | 551f2a43de0465202e3a3aca24379481cc35733e (diff) | |
| download | wix-ef0dbdc18c4335fef395fb954845031ea90503be.tar.gz wix-ef0dbdc18c4335fef395fb954845031ea90503be.tar.bz2 wix-ef0dbdc18c4335fef395fb954845031ea90503be.zip | |
Move the targets files into the top-level tools folder.
Diffstat (limited to 'src/WixToolset.BuildTasks')
| -rw-r--r-- | src/WixToolset.BuildTasks/WixToolset.BuildTasks.csproj | 9 | ||||
| -rw-r--r-- | src/WixToolset.BuildTasks/redirects/wix.ca.targets | 10 | ||||
| -rw-r--r-- | src/WixToolset.BuildTasks/redirects/wix.targets | 10 | ||||
| -rw-r--r-- | src/WixToolset.BuildTasks/wix.ca.targets | 123 | ||||
| -rw-r--r-- | src/WixToolset.BuildTasks/wix.harvest.targets | 505 | ||||
| -rw-r--r-- | src/WixToolset.BuildTasks/wix.signing.targets | 370 | ||||
| -rw-r--r-- | src/WixToolset.BuildTasks/wix.targets | 1063 |
7 files changed, 0 insertions, 2090 deletions
diff --git a/src/WixToolset.BuildTasks/WixToolset.BuildTasks.csproj b/src/WixToolset.BuildTasks/WixToolset.BuildTasks.csproj index 8724f2fc..a8363e7b 100644 --- a/src/WixToolset.BuildTasks/WixToolset.BuildTasks.csproj +++ b/src/WixToolset.BuildTasks/WixToolset.BuildTasks.csproj | |||
| @@ -17,15 +17,6 @@ | |||
| 17 | </PropertyGroup> | 17 | </PropertyGroup> |
| 18 | 18 | ||
| 19 | <ItemGroup> | 19 | <ItemGroup> |
| 20 | <Content Include="redirects\wix.targets" CopyToOutputDirectory="PreserveNewest" /> | ||
| 21 | <Content Include="redirects\wix.ca.targets" CopyToOutputDirectory="PreserveNewest" /> | ||
| 22 | <Content Include="wix.targets" CopyToOutputDirectory="PreserveNewest" /> | ||
| 23 | <Content Include="wix.ca.targets" CopyToOutputDirectory="PreserveNewest" /> | ||
| 24 | <Content Include="wix.harvest.targets" CopyToOutputDirectory="PreserveNewest" /> | ||
| 25 | <Content Include="wix.signing.targets" CopyToOutputDirectory="PreserveNewest" /> | ||
| 26 | </ItemGroup> | ||
| 27 | |||
| 28 | <ItemGroup> | ||
| 29 | <ProjectReference Include="..\WixToolset.Tools.Core\WixToolset.Tools.Core.csproj" /> | 20 | <ProjectReference Include="..\WixToolset.Tools.Core\WixToolset.Tools.Core.csproj" /> |
| 30 | </ItemGroup> | 21 | </ItemGroup> |
| 31 | 22 | ||
diff --git a/src/WixToolset.BuildTasks/redirects/wix.ca.targets b/src/WixToolset.BuildTasks/redirects/wix.ca.targets deleted file mode 100644 index ecb6e09f..00000000 --- a/src/WixToolset.BuildTasks/redirects/wix.ca.targets +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 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 | <WixInstallFolder>$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\WiX Toolset\v4', 'InstallFolder', null, RegistryView.Registry32))</WixInstallFolder> | ||
| 7 | </PropertyGroup> | ||
| 8 | |||
| 9 | <Import Project="$(WixInstallFolder)sdk\wix.ca.targets" /> | ||
| 10 | </Project> | ||
diff --git a/src/WixToolset.BuildTasks/redirects/wix.targets b/src/WixToolset.BuildTasks/redirects/wix.targets deleted file mode 100644 index ba354b65..00000000 --- a/src/WixToolset.BuildTasks/redirects/wix.targets +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 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 | <WixInstallFolder>$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\WiX Toolset\v4', 'InstallFolder', null, RegistryView.Registry32))</WixInstallFolder> | ||
| 7 | </PropertyGroup> | ||
| 8 | |||
| 9 | <Import Project="$(WixInstallFolder)bin\wix.targets" /> | ||
| 10 | </Project> | ||
diff --git a/src/WixToolset.BuildTasks/wix.ca.targets b/src/WixToolset.BuildTasks/wix.ca.targets deleted file mode 100644 index 4578c2d8..00000000 --- a/src/WixToolset.BuildTasks/wix.ca.targets +++ /dev/null | |||
| @@ -1,123 +0,0 @@ | |||
| 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 | |||
| 5 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> | ||
| 6 | |||
| 7 | <Import Project="$(CustomBeforeWixCATargets)" Condition=" '$(CustomBeforeWixCATargets)' != '' and Exists('$(CustomBeforeWixCATargets)')" /> | ||
| 8 | |||
| 9 | <PropertyGroup> | ||
| 10 | <WixCATargetsImported>true</WixCATargetsImported> | ||
| 11 | |||
| 12 | <TargetCAFileName Condition=" '$(TargetCAFileName)' == '' ">$(TargetName).CA$(TargetExt)</TargetCAFileName> | ||
| 13 | |||
| 14 | <WixSdkPath Condition=" '$(WixSdkPath)' == '' ">$(MSBuildThisFileDirectory)</WixSdkPath> | ||
| 15 | <WixSdkX86Path Condition=" '$(WixSdkX86Path)' == '' ">$(WixSdkPath)x86\</WixSdkX86Path> | ||
| 16 | <WixSdkX64Path Condition=" '$(WixSdkX64Path)' == '' ">$(WixSdkPath)x64\</WixSdkX64Path> | ||
| 17 | |||
| 18 | <MakeSfxCA Condition=" '$(MakeSfxCA)' == '' ">$(WixSdkPath)MakeSfxCA.exe</MakeSfxCA> | ||
| 19 | <SfxCADll Condition=" '$(SfxCADll)' == '' and '$(Platform)' == 'x64' ">$(WixSdkX64Path)SfxCA.dll</SfxCADll> | ||
| 20 | <SfxCADll Condition=" '$(SfxCADll)' == '' ">$(WixSdkX86Path)SfxCA.dll</SfxCADll> | ||
| 21 | </PropertyGroup> | ||
| 22 | |||
| 23 | <!-- | ||
| 24 | ================================================================================================== | ||
| 25 | PackCustomAction | ||
| 26 | |||
| 27 | Creates an MSI managed custom action package that includes the custom action assembly, | ||
| 28 | local assembly dependencies, and project content files. | ||
| 29 | |||
| 30 | [IN] | ||
| 31 | @(IntermediateAssembly) - Managed custom action assembly. | ||
| 32 | @(Content) - Project items of type Content will be included in the package. | ||
| 33 | $(CustomActionContents) - Optional space-delimited list of additional files to include. | ||
| 34 | |||
| 35 | [OUT] | ||
| 36 | $(IntermediateOutputPath)$(TargetCAFileName) - Managed custom action package with unmanaged stub. | ||
| 37 | ================================================================================================== | ||
| 38 | --> | ||
| 39 | <Target Name="PackCustomAction" | ||
| 40 | Inputs="@(IntermediateAssembly);@(Content);$(CustomActionContents)" | ||
| 41 | Outputs="$(IntermediateOutputPath)$(TargetCAFileName)"> | ||
| 42 | |||
| 43 | <!-- Find all referenced items marked CopyLocal, but exclude non-binary files. --> | ||
| 44 | <ItemGroup> | ||
| 45 | <CustomActionReferenceContents Include="@(ReferenceCopyLocalPaths)" | ||
| 46 | Condition=" '%(Extension)' == '.dll' or '%(Extension)' == '.exe' " /> | ||
| 47 | <CustomActionReferenceContents Include="@(ReferenceComWrappersToCopyLocal)" | ||
| 48 | Condition=" '%(Extension)' == '.dll' or '%(Extension)' == '.exe' " /> | ||
| 49 | |||
| 50 | <!-- include PDBs for Debug only --> | ||
| 51 | <CustomActionReferenceContents Include="@(IntermediateAssembly->'%(RootDir)%(Directory)%(Filename).pdb')" | ||
| 52 | Condition=" Exists('%(RootDir)%(Directory)%(Filename).pdb') and '$(Configuration)' == 'Debug' " /> | ||
| 53 | <CustomActionReferenceContents Include="@(ReferenceCopyLocalPaths)" | ||
| 54 | Condition=" '%(Extension)' == '.pdb' and '$(Configuration)' == 'Debug' " /> | ||
| 55 | <CustomActionReferenceContents Include="@(ReferenceComWrappersToCopyLocal)" | ||
| 56 | Condition=" '%(Extension)' == '.pdb' and '$(Configuration)' == 'Debug' " /> | ||
| 57 | </ItemGroup> | ||
| 58 | |||
| 59 | <!-- | ||
| 60 | Items to include in the CA package: | ||
| 61 | - Reference assemblies marked CopyLocal | ||
| 62 | - Project items of type Content | ||
| 63 | - Additional items in the CustomActionContents property | ||
| 64 | --> | ||
| 65 | <PropertyGroup> | ||
| 66 | <CustomActionContents>@(CustomActionReferenceContents);@(Content->'%(FullPath)');$(CustomActionContents)</CustomActionContents> | ||
| 67 | </PropertyGroup> | ||
| 68 | |||
| 69 | <ItemGroup> | ||
| 70 | <IntermediateCAAssembly Include="@(IntermediateAssembly->'%(FullPath)')" /> | ||
| 71 | <IntermediateCAPackage Include="@(IntermediateAssembly->'%(RootDir)%(Directory)$(TargetCAFileName)')" /> | ||
| 72 | </ItemGroup> | ||
| 73 | |||
| 74 | <!-- Run the MakeSfxCA.exe CA packaging tool. --> | ||
| 75 | <Exec Command='"$(MakeSfxCA)" "@(IntermediateCAPackage)" "$(SfxCADll)" "@(IntermediateCAAssembly)" "$(CustomActionContents)"' | ||
| 76 | WorkingDirectory="$(ProjectDir)" /> | ||
| 77 | |||
| 78 | <!-- Add modules to be copied to output dir. --> | ||
| 79 | <ItemGroup> | ||
| 80 | <AddModules Include="@(IntermediateCAPackage)" /> | ||
| 81 | </ItemGroup> | ||
| 82 | </Target> | ||
| 83 | |||
| 84 | <!-- | ||
| 85 | ================================================================================================== | ||
| 86 | CleanCustomAction | ||
| 87 | |||
| 88 | Cleans the .CA.dll binary created by the PackCustomAction target. | ||
| 89 | |||
| 90 | ================================================================================================== | ||
| 91 | --> | ||
| 92 | <Target Name="CleanCustomAction"> | ||
| 93 | <Delete Files="$(IntermediateOutputPath)$(TargetCAFileName)" | ||
| 94 | TreatErrorsAsWarnings="true" /> | ||
| 95 | </Target> | ||
| 96 | |||
| 97 | <!-- | ||
| 98 | ================================================================================================== | ||
| 99 | AfterCompile (redefinition) | ||
| 100 | |||
| 101 | Calls the PackCustomAction target after compiling. | ||
| 102 | Overrides the empty AfterCompile target from Microsoft.Common.targets. | ||
| 103 | |||
| 104 | ================================================================================================== | ||
| 105 | --> | ||
| 106 | <Target Name="AfterCompile" | ||
| 107 | DependsOnTargets="PackCustomAction" /> | ||
| 108 | |||
| 109 | <!-- | ||
| 110 | ================================================================================================== | ||
| 111 | BeforeClean (redefinition) | ||
| 112 | |||
| 113 | Calls the CleanCustomAction target before cleaning. | ||
| 114 | Overrides the empty AfterCompile target from Microsoft.Common.targets. | ||
| 115 | |||
| 116 | ================================================================================================== | ||
| 117 | --> | ||
| 118 | <Target Name="BeforeClean" | ||
| 119 | DependsOnTargets="CleanCustomAction" /> | ||
| 120 | |||
| 121 | <Import Project="$(CustomAfterWixCATargets)" Condition=" '$(CustomAfterWixCATargets)' != '' and Exists('$(CustomAfterWixCATargets)')" /> | ||
| 122 | |||
| 123 | </Project> | ||
diff --git a/src/WixToolset.BuildTasks/wix.harvest.targets b/src/WixToolset.BuildTasks/wix.harvest.targets deleted file mode 100644 index 5dd2f729..00000000 --- a/src/WixToolset.BuildTasks/wix.harvest.targets +++ /dev/null | |||
| @@ -1,505 +0,0 @@ | |||
| 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 | |||
| 5 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| 6 | |||
| 7 | <!-- These properties can be overridden to support non-default installations. --> | ||
| 8 | <PropertyGroup> | ||
| 9 | <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildThisFileFullPath)</WixTargetsPath> | ||
| 10 | <WixTasksPath Condition=" '$(WixTasksPath)' == '' ">$(WixTargetsPath)WixToolset.BuildTasks.dll</WixTasksPath> | ||
| 11 | </PropertyGroup> | ||
| 12 | |||
| 13 | <!-- These tasks are extensions for harvesting WiX source code from other sources. --> | ||
| 14 | <UsingTask TaskName="HeatFile" AssemblyFile="$(WixTasksPath)" /> | ||
| 15 | <UsingTask TaskName="HeatDirectory" AssemblyFile="$(WixTasksPath)" /> | ||
| 16 | <UsingTask TaskName="HeatProject" AssemblyFile="$(WixTasksPath)" /> | ||
| 17 | |||
| 18 | <UsingTask TaskName="RefreshGeneratedFile" AssemblyFile="$(WixTasksPath)"/> | ||
| 19 | <UsingTask TaskName="RefreshBundleGeneratedFile" AssemblyFile="$(WixTasksPath)"/> | ||
| 20 | |||
| 21 | <!-- Default Harvester properties--> | ||
| 22 | <PropertyGroup> | ||
| 23 | <HarvestNoLogo Condition=" '$(HarvestNoLogo)' == '' ">$(NoLogo)</HarvestNoLogo> | ||
| 24 | <HarvestSuppressAllWarnings Condition=" '$(HarvestSuppressAllWarnings)' == '' ">$(SuppressAllWarnings)</HarvestSuppressAllWarnings> | ||
| 25 | <HarvestSuppressSpecificWarnings Condition=" '$(HarvestSuppressSpecificWarnings)' == '' ">$(SuppressSpecificWarnings)</HarvestSuppressSpecificWarnings> | ||
| 26 | <HarvestTreatWarningsAsErrors Condition=" '$(HarvestTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</HarvestTreatWarningsAsErrors> | ||
| 27 | <HarvestTreatSpecificWarningsAsErrors Condition=" '$(HarvestTreatSpecificWarningsAsErrors)' == '' ">$(TreatSpecificWarningsAsErrors)</HarvestTreatSpecificWarningsAsErrors> | ||
| 28 | <HarvestVerboseOutput Condition=" '$(HarvestVerboseOutput)' == '' ">$(VerboseOutput)</HarvestVerboseOutput> | ||
| 29 | <HarvestAutogenerateGuids Condition=" '$(HarvestAutogenerateGuids)' == '' ">true</HarvestAutogenerateGuids> | ||
| 30 | <HarvestGenerateGuidsNow Condition=" '$(HarvestGenerateGuidsNow)' == '' ">false</HarvestGenerateGuidsNow> | ||
| 31 | <HarvestSuppressFragments Condition=" '$(HarvestSuppressFragments)' == '' ">true</HarvestSuppressFragments> | ||
| 32 | <HarvestSuppressUniqueIds Condition=" '$(HarvestSuppressUniqueIds)' == '' ">false</HarvestSuppressUniqueIds> | ||
| 33 | </PropertyGroup> | ||
| 34 | |||
| 35 | <!-- Default HarvestProjects properties --> | ||
| 36 | <PropertyGroup> | ||
| 37 | <!-- Project harvesting is defaulted to off until it works more consistently. --> | ||
| 38 | <EnableProjectHarvesting Condition=" '$(EnableProjectHarvesting)'=='' ">false</EnableProjectHarvesting> | ||
| 39 | |||
| 40 | <HarvestProjectsNoLogo Condition=" '$(HarvestProjectsNoLogo)' == '' ">$(HarvestNoLogo)</HarvestProjectsNoLogo> | ||
| 41 | <HarvestProjectsSuppressAllWarnings Condition=" '$(HarvestProjectsSuppressAllWarnings)' == '' ">$(HarvestSuppressAllWarnings)</HarvestProjectsSuppressAllWarnings> | ||
| 42 | <HarvestProjectsSuppressSpecificWarnings Condition=" '$(HarvestProjectsSuppressSpecificWarnings)' == '' ">$(HarvestSuppressSpecificWarnings)</HarvestProjectsSuppressSpecificWarnings> | ||
| 43 | <HarvestProjectsTreatWarningsAsErrors Condition=" '$(HarvestProjectsTreatWarningsAsErrors)' == '' ">$(HarvestTreatWarningsAsErrors)</HarvestProjectsTreatWarningsAsErrors> | ||
| 44 | <HarvestProjectsTreatSpecificWarningsAsErrors Condition=" '$(HarvestProjectsTreatSpecificWarningsAsErrors)' == '' ">$(HarvestTreatSpecificWarningsAsErrors)</HarvestProjectsTreatSpecificWarningsAsErrors> | ||
| 45 | <HarvestProjectsVerboseOutput Condition=" '$(HarvestProjectsVerboseOutput)' == '' ">$(HarvestVerboseOutput)</HarvestProjectsVerboseOutput> | ||
| 46 | <HarvestProjectsAutogenerateGuids Condition=" '$(HarvestProjectsAutogenerateGuids)' == '' ">$(HarvestAutogenerateGuids)</HarvestProjectsAutogenerateGuids> | ||
| 47 | <HarvestProjectsGenerateGuidsNow Condition=" '$(HarvestProjectsGenerateGuidsNow)' == '' ">$(HarvestGenerateGuidsNow)</HarvestProjectsGenerateGuidsNow> | ||
| 48 | <HarvestProjectsSuppressFragments Condition=" '$(HarvestProjectsSuppressFragments)' == '' ">$(HarvestSuppressFragments)</HarvestProjectsSuppressFragments> | ||
| 49 | <HarvestProjectsSuppressUniqueIds Condition=" '$(HarvestProjectsSuppressUniqueIds)' == '' ">$(HarvestSuppressUniqueIds)</HarvestProjectsSuppressUniqueIds> | ||
| 50 | <HarvestProjectsTransforms Condition=" '$(HarvestProjectsTransforms)' == '' ">$(HarvestTransforms)</HarvestProjectsTransforms> | ||
| 51 | <HarvestProjectsGeneratedFile Condition=" '$(HarvestProjectsGeneratedFile)' == '' and '$(OutputType)' != 'Bundle' ">$(IntermediateOutputPath)Product.Generated.wxs</HarvestProjectsGeneratedFile> | ||
| 52 | <HarvestProjectsGeneratedFile Condition=" '$(HarvestProjectsGeneratedFile)' == '' and '$(OutputType)' == 'Bundle' ">$(IntermediateOutputPath)Bundle.Generated.wxs</HarvestProjectsGeneratedFile> | ||
| 53 | </PropertyGroup> | ||
| 54 | |||
| 55 | <!-- Default HarvestDirectory properties --> | ||
| 56 | <PropertyGroup> | ||
| 57 | <HarvestDirectoryNoLogo Condition=" '$(HarvestDirectoryNoLogo)' == '' ">$(HarvestNoLogo)</HarvestDirectoryNoLogo> | ||
| 58 | <HarvestDirectorySuppressAllWarnings Condition=" '$(HarvestDirectorySuppressAllWarnings)' == '' ">$(HarvestSuppressAllWarnings)</HarvestDirectorySuppressAllWarnings> | ||
| 59 | <HarvestDirectorySuppressSpecificWarnings Condition=" '$(HarvestDirectorySuppressSpecificWarnings)' == '' ">$(HarvestSuppressSpecificWarnings)</HarvestDirectorySuppressSpecificWarnings> | ||
| 60 | <HarvestDirectoryTreatWarningsAsErrors Condition=" '$(HarvestDirectoryTreatWarningsAsErrors)' == '' ">$(HarvestTreatWarningsAsErrors)</HarvestDirectoryTreatWarningsAsErrors> | ||
| 61 | <HarvestDirectoryTreatSpecificWarningsAsErrors Condition=" '$(HarvestDirectoryTreatSpecificWarningsAsErrors)' == '' ">$(HarvestTreatSpecificWarningsAsErrors)</HarvestDirectoryTreatSpecificWarningsAsErrors> | ||
| 62 | <HarvestDirectoryVerboseOutput Condition=" '$(HarvestDirectoryVerboseOutput)' == '' ">$(HarvestVerboseOutput)</HarvestDirectoryVerboseOutput> | ||
| 63 | <HarvestDirectoryAutogenerateGuids Condition=" '$(HarvestDirectoryAutogenerateGuids)' == '' ">$(HarvestAutogenerateGuids)</HarvestDirectoryAutogenerateGuids> | ||
| 64 | <HarvestDirectoryGenerateGuidsNow Condition=" '$(HarvestDirectoryGenerateGuidsNow)' == '' ">$(HarvestGenerateGuidsNow)</HarvestDirectoryGenerateGuidsNow> | ||
| 65 | <HarvestDirectorySuppressFragments Condition=" '$(HarvestDirectorySuppressFragments)' == '' ">$(HarvestSuppressFragments)</HarvestDirectorySuppressFragments> | ||
| 66 | <HarvestDirectorySuppressUniqueIds Condition=" '$(HarvestDirectorySuppressUniqueIds)' == '' ">$(HarvestSuppressUniqueIds)</HarvestDirectorySuppressUniqueIds> | ||
| 67 | <HarvestDirectoryTransforms Condition=" '$(HarvestDirectoryTransforms)' == '' ">$(HarvestTransforms)</HarvestDirectoryTransforms> | ||
| 68 | </PropertyGroup> | ||
| 69 | |||
| 70 | <!-- Default HarvestFile properties --> | ||
| 71 | <PropertyGroup> | ||
| 72 | <HarvestFileNoLogo Condition=" '$(HarvestFileNoLogo)' == '' ">$(HarvestNoLogo)</HarvestFileNoLogo> | ||
| 73 | <HarvestFileSuppressAllWarnings Condition=" '$(HarvestFileSuppressAllWarnings)' == '' ">$(HarvestSuppressAllWarnings)</HarvestFileSuppressAllWarnings> | ||
| 74 | <HarvestFileSuppressSpecificWarnings Condition=" '$(HarvestFileSuppressSpecificWarnings)' == '' ">$(HarvestSuppressSpecificWarnings)</HarvestFileSuppressSpecificWarnings> | ||
| 75 | <HarvestFileTreatWarningsAsErrors Condition=" '$(HarvestFileTreatWarningsAsErrors)' == '' ">$(HarvestTreatWarningsAsErrors)</HarvestFileTreatWarningsAsErrors> | ||
| 76 | <HarvestFileTreatSpecificWarningsAsErrors Condition=" '$(HarvestFileTreatSpecificWarningsAsErrors)' == '' ">$(HarvestTreatSpecificWarningsAsErrors)</HarvestFileTreatSpecificWarningsAsErrors> | ||
| 77 | <HarvestFileVerboseOutput Condition=" '$(HarvestFileVerboseOutput)' == '' ">$(HarvestVerboseOutput)</HarvestFileVerboseOutput> | ||
| 78 | <HarvestFileAutogenerateGuids Condition=" '$(HarvestFileAutogenerateGuids)' == '' ">$(HarvestAutogenerateGuids)</HarvestFileAutogenerateGuids> | ||
| 79 | <HarvestFileGenerateGuidsNow Condition=" '$(HarvestFileGenerateGuidsNow)' == '' ">$(HarvestGenerateGuidsNow)</HarvestFileGenerateGuidsNow> | ||
| 80 | <HarvestFileSuppressFragments Condition=" '$(HarvestFileSuppressFragments)' == '' ">$(HarvestSuppressFragments)</HarvestFileSuppressFragments> | ||
| 81 | <HarvestFileSuppressUniqueIds Condition=" '$(HarvestFileSuppressUniqueIds)' == '' ">$(HarvestSuppressUniqueIds)</HarvestFileSuppressUniqueIds> | ||
| 82 | <HarvestFileTransforms Condition=" '$(HarvestFileTransforms)' == '' ">$(HarvestTransforms)</HarvestFileTransforms> | ||
| 83 | </PropertyGroup> | ||
| 84 | |||
| 85 | <!-- | ||
| 86 | ================================================================================================== | ||
| 87 | Harvest | ||
| 88 | ================================================================================================== | ||
| 89 | --> | ||
| 90 | <PropertyGroup> | ||
| 91 | <HarvestDependsOn> | ||
| 92 | ConvertReferences; | ||
| 93 | ConvertBundleReferences; | ||
| 94 | HarvestProjects; | ||
| 95 | HarvestDirectory; | ||
| 96 | HarvestFile; | ||
| 97 | GenerateCode; | ||
| 98 | </HarvestDependsOn> | ||
| 99 | </PropertyGroup> | ||
| 100 | <Target | ||
| 101 | Name="Harvest" | ||
| 102 | DependsOnTargets="$(HarvestDependsOn)" /> | ||
| 103 | |||
| 104 | <!-- | ||
| 105 | ================================================================================================== | ||
| 106 | GenerateCode | ||
| 107 | ================================================================================================== | ||
| 108 | --> | ||
| 109 | <PropertyGroup> | ||
| 110 | <GenerateCodeDependsOn> | ||
| 111 | RefreshGeneratedFile; | ||
| 112 | RefreshBundleGeneratedFile | ||
| 113 | </GenerateCodeDependsOn> | ||
| 114 | </PropertyGroup> | ||
| 115 | <Target | ||
| 116 | Name="GenerateCode" | ||
| 117 | DependsOnTargets="$(GenerateCodeDependsOn)" /> | ||
| 118 | |||
| 119 | <!-- | ||
| 120 | ================================================================================================ | ||
| 121 | ConvertReferences | ||
| 122 | |||
| 123 | Converts project references to HeatProject items to auto generate authoring. | ||
| 124 | ================================================================================================ | ||
| 125 | --> | ||
| 126 | <Target | ||
| 127 | Name="ConvertReferences" | ||
| 128 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Package' or '$(OutputType)' == 'PatchCreation' or '$(OutputType)' == 'Module') "> | ||
| 129 | |||
| 130 | <ItemGroup> | ||
| 131 | <_HeatProjectReference Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' "> | ||
| 132 | <DirectoryIds>%(_MSBuildProjectReferenceExistent.RefTargetDir)</DirectoryIds> | ||
| 133 | <ProjectOutputGroups>Binaries;Symbols;Sources;Content;Satellites;Documents</ProjectOutputGroups> | ||
| 134 | <ProjectName>%(_MSBuildProjectReferenceExistent.Name)</ProjectName> | ||
| 135 | <HeatOutput>$(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs</HeatOutput> | ||
| 136 | </_HeatProjectReference> | ||
| 137 | <HeatProject Include="@(_HeatProjectReference)" /> | ||
| 138 | </ItemGroup> | ||
| 139 | |||
| 140 | <Error | ||
| 141 | Text="The following files are deprecated and should be removed from your project(s): @(Compile->'%(Identity)', ', ')" | ||
| 142 | Condition=" '%(Compile.GenerateComponentGroups)' != '' " /> | ||
| 143 | |||
| 144 | <ItemGroup> | ||
| 145 | <!-- Unconditionally generate Compile items so they are always linked in. --> | ||
| 146 | <Compile Include="$(HarvestProjectsGeneratedFile)" /> | ||
| 147 | <_GeneratedFiles Include="$(HarvestProjectsGeneratedFile)" /> | ||
| 148 | </ItemGroup> | ||
| 149 | |||
| 150 | </Target> | ||
| 151 | |||
| 152 | <!-- | ||
| 153 | ================================================================================================ | ||
| 154 | ConvertBundleReferences | ||
| 155 | |||
| 156 | Converts project references in Bundle projects to HeatProject items to auto generate authoring. | ||
| 157 | ================================================================================================ | ||
| 158 | --> | ||
| 159 | <Target | ||
| 160 | Name="ConvertBundleReferences" | ||
| 161 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Bundle') "> | ||
| 162 | |||
| 163 | <ItemGroup> | ||
| 164 | <_HeatProjectReference Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' "> | ||
| 165 | <ProjectOutputGroups>Binaries;Symbols;Sources;Content;Satellites;Documents</ProjectOutputGroups> | ||
| 166 | <GenerateType>payloadgroup</GenerateType> | ||
| 167 | <HeatOutput>$(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs</HeatOutput> | ||
| 168 | </_HeatProjectReference> | ||
| 169 | <HeatProject Include="@(_HeatProjectReference)" /> | ||
| 170 | </ItemGroup> | ||
| 171 | |||
| 172 | <Error | ||
| 173 | Text="The following files are deprecated and should be removed from your project(s): @(Compile->'%(Identity)', ', ')" | ||
| 174 | Condition=" '%(Compile.GenerateComponentGroups)' != '' " /> | ||
| 175 | |||
| 176 | <ItemGroup> | ||
| 177 | <!-- Unconditionally generate Compile items so they are always linked in. --> | ||
| 178 | <Compile Include="$(HarvestProjectsGeneratedFile)" /> | ||
| 179 | <_GeneratedFiles Include="$(HarvestProjectsGeneratedFile)" /> | ||
| 180 | </ItemGroup> | ||
| 181 | |||
| 182 | </Target> | ||
| 183 | |||
| 184 | <!-- | ||
| 185 | ================================================================================================ | ||
| 186 | CombineHarvestProjects | ||
| 187 | |||
| 188 | Combines HeatProject and HarvestProject items together and ensures each has HeatOutput metadata. | ||
| 189 | ================================================================================================ | ||
| 190 | --> | ||
| 191 | <Target | ||
| 192 | Name="CombineHarvestProjects" | ||
| 193 | Condition=" '@(HeatProject)' != '' or '@(HarvestProject)' != '' "> | ||
| 194 | |||
| 195 | <!-- Add default HeatOutputs for those without one specified --> | ||
| 196 | <CreateItem Include="@(HeatProject)" Condition= " '%(HeatProject.HeatOutput)' == '' " | ||
| 197 | AdditionalMetadata="HeatOutput=$(IntermediateOutputPath)_%(HeatProject.Filename).wxs"> | ||
| 198 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> | ||
| 199 | </CreateItem> | ||
| 200 | <CreateItem Include="@(HarvestProject)" Condition= " '%(HarvestProject.HeatOutput)' == '' " | ||
| 201 | AdditionalMetadata="HeatOutput=$(IntermediateOutputPath)_%(HarvestProject.Filename).wxs"> | ||
| 202 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> | ||
| 203 | </CreateItem> | ||
| 204 | |||
| 205 | |||
| 206 | <CreateItem Include="@(HeatProject)" Condition= " '%(HeatProject.HeatOutput)' != '' "> | ||
| 207 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> | ||
| 208 | </CreateItem> | ||
| 209 | <CreateItem Include="@(HarvestProject)" Condition= " '%(HarvestProject.HeatOutput)' != '' "> | ||
| 210 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> | ||
| 211 | </CreateItem> | ||
| 212 | |||
| 213 | </Target> | ||
| 214 | |||
| 215 | <!-- | ||
| 216 | ================================================================================================ | ||
| 217 | HarvestProjects | ||
| 218 | |||
| 219 | Harvests outputs of other MSBuild projects files using the VS project extension to heat.exe. | ||
| 220 | |||
| 221 | [IN] | ||
| 222 | @(HarvestProject) | ||
| 223 | @(HeatProject) | ||
| 224 | - The list of projects to harvest. HeatProject is provided for backward compatibility. | ||
| 225 | You should use HarvestProject instead. | ||
| 226 | |||
| 227 | %(HarvestProject.Transforms) | ||
| 228 | %(HeatProject.Transforms) | ||
| 229 | - XSL transforms to apply to the harvested WiX. | ||
| 230 | |||
| 231 | %(HarvestProject.ProjectOutputGroups) | ||
| 232 | %(HeatProjects.ProjectOutputGroups) | ||
| 233 | - The project output groups to harvest | ||
| 234 | |||
| 235 | [OUT] | ||
| 236 | %(HeatOutput) | ||
| 237 | - The generated .wxs files which are added to the @(Compile) item list. | ||
| 238 | ================================================================================================ | ||
| 239 | --> | ||
| 240 | <ItemDefinitionGroup> | ||
| 241 | <HeatProject> | ||
| 242 | <Transforms>$(HarvestProjectsTransforms)</Transforms> | ||
| 243 | <ProjectOutputGroups>$(HarvestProjectsProjectOutputGroups)</ProjectOutputGroups> | ||
| 244 | <DirectoryIds>$(HarvestProjectsDirectoryIds)</DirectoryIds> | ||
| 245 | </HeatProject> | ||
| 246 | <HarvestProject> | ||
| 247 | <Transforms>$(HarvestProjectsTransforms)</Transforms> | ||
| 248 | <ProjectOutputGroups>$(HarvestProjectsProjectOutputGroups)</ProjectOutputGroups> | ||
| 249 | <DirectoryIds>$(HarvestProjectsDirectoryIds)</DirectoryIds> | ||
| 250 | </HarvestProject> | ||
| 251 | </ItemDefinitionGroup> | ||
| 252 | |||
| 253 | <PropertyGroup> | ||
| 254 | <HarvestProjectsDependsOn>CombineHarvestProjects</HarvestProjectsDependsOn> | ||
| 255 | </PropertyGroup> | ||
| 256 | <Target Name="HarvestProjects" | ||
| 257 | DependsOnTargets="$(HarvestProjectsDependsOn)" | ||
| 258 | Inputs="@(_AllHeatProjects);%(_AllHeatProjects.Transforms);$(MSBuildAllProjects);$(ProjectPath)" | ||
| 259 | Outputs="@(_AllHeatProjects -> '%(HeatOutput)')" | ||
| 260 | Condition=" $(EnableProjectHarvesting) and ('@(HeatProject)' != '' or '@(HarvestProject)' != '') "> | ||
| 261 | |||
| 262 | <HeatProject | ||
| 263 | NoLogo="true" | ||
| 264 | SuppressAllWarnings="$(HarvestProjectsSuppressAllWarnings)" | ||
| 265 | SuppressSpecificWarnings="$(HarvestProjectsSuppressSpecificWarnings)" | ||
| 266 | TreatWarningsAsErrors="$(HarvestProjectsTreatWarningsAsErrors)" | ||
| 267 | TreatSpecificWarningsAsErrors="$(HarvestProjectsTreatSpecificWarningsAsErrors)" | ||
| 268 | VerboseOutput="$(HarvestProjectsVerboseOutput)" | ||
| 269 | AutogenerateGuids="$(HarvestProjectsAutogenerateGuids)" | ||
| 270 | GenerateGuidsNow="$(HarvestProjectsGenerateGuidsNow)" | ||
| 271 | OutputFile="%(_AllHeatProjects.HeatOutput)" | ||
| 272 | SuppressFragments="$(HarvestProjectsSuppressFragments)" | ||
| 273 | SuppressUniqueIds="$(HarvestProjectsSuppressUniqueIds)" | ||
| 274 | Transforms="%(_AllHeatProjects.Transforms)" | ||
| 275 | Project="%(_AllHeatProjects.FullPath)" | ||
| 276 | ProjectOutputGroups="%(_AllHeatProjects.ProjectOutputGroups)" | ||
| 277 | GenerateType="%(_AllHeatProjects.GenerateType)" | ||
| 278 | DirectoryIds="%(_AllHeatProjects.DirectoryIds)" | ||
| 279 | ProjectName="%(_AllHeatProjects.ProjectName)" | ||
| 280 | Configuration="%(_AllHeatProjects.Configuration)" | ||
| 281 | Platform="%(_AllHeatProjects.Platform)" | ||
| 282 | GenerateWixVariables="$(HarvestProjectsGenerateWixVariables)" | ||
| 283 | AdditionalOptions="$(HarvestProjectsAdditionalOptions)"> | ||
| 284 | |||
| 285 | <Output TaskParameter="OutputFile" ItemName="Compile" /> | ||
| 286 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> | ||
| 287 | |||
| 288 | </HeatProject> | ||
| 289 | |||
| 290 | </Target> | ||
| 291 | |||
| 292 | <!-- | ||
| 293 | ================================================================================================ | ||
| 294 | HarvestDirectory | ||
| 295 | |||
| 296 | Harvests directories using heat.exe. | ||
| 297 | |||
| 298 | [IN] | ||
| 299 | @(HarvestDirectory) - The list of directories to harvest. | ||
| 300 | %(HarvestDirectory.Transforms) - XSL transforms to apply to the harvested WiX. | ||
| 301 | %(HarvestDirectory.ComponentGroupName) - The name of the ComponentGroup to create. | ||
| 302 | %(HarvestDirectory.DirectoryRefId) - The ID of the directory to reference instead of TARGETDIR. | ||
| 303 | %(HarvestDirectory.KeepEmptyDirectories) - Whether to create Directory entries for empty directories. | ||
| 304 | %(HarvestDirectory.PreprocessorVariable) - Substitute SourceDir for another variable name (ex: var.Dir). | ||
| 305 | %(HarvestDirectory.SuppressCom) - Suppress COM elements. | ||
| 306 | %(HarvestDirectory.SuppressRootDirectory) - Suppress a Directory element for the root directory. | ||
| 307 | $(HarvestDirectory.SuppressRegistry) - Suppress registry harvesting. | ||
| 308 | |||
| 309 | [OUT] | ||
| 310 | $(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs | ||
| 311 | - The generated .wxs files which are added to the @(Compile) item list. | ||
| 312 | ================================================================================================ | ||
| 313 | --> | ||
| 314 | |||
| 315 | <ItemDefinitionGroup> | ||
| 316 | <HarvestDirectory> | ||
| 317 | <Transforms>$(HarvestDirectoryTransforms)</Transforms> | ||
| 318 | <ComponentGroupName>$(HarvestDirectoryComponentGroupName)</ComponentGroupName> | ||
| 319 | <DirectoryRefId>$(HarvestDirectoryDirectoryRefId)</DirectoryRefId> | ||
| 320 | <KeepEmptyDirectories>$(HarvestDirectoryKeepEmptyDirectories)</KeepEmptyDirectories> | ||
| 321 | <PreprocessorVariable>$(HarvestDirectoryPreprocessorVariable)</PreprocessorVariable> | ||
| 322 | <SuppressCom>$(HarvestDirectorySuppressCom)</SuppressCom> | ||
| 323 | <SuppressRootDirectory>$(HarvestDirectorySuppressRootDirectory)</SuppressRootDirectory> | ||
| 324 | <SuppressRegistry>$(HarvestDirectorySuppressRegistry)</SuppressRegistry> | ||
| 325 | </HarvestDirectory> | ||
| 326 | </ItemDefinitionGroup> | ||
| 327 | |||
| 328 | <PropertyGroup> | ||
| 329 | <HarvestDirectoryDependsOn> | ||
| 330 | GetHarvestDirectoryContent | ||
| 331 | </HarvestDirectoryDependsOn> | ||
| 332 | </PropertyGroup> | ||
| 333 | |||
| 334 | <!-- Creates items to include content since wildcards will not work in Target/@Inputs. --> | ||
| 335 | <Target Name="GetHarvestDirectoryContent"> | ||
| 336 | <CreateItem Include="@(HarvestDirectory->'%(FullPath)\**\*')"> | ||
| 337 | <Output TaskParameter="Include" ItemName="_HarvestDirectoryContent" /> | ||
| 338 | </CreateItem> | ||
| 339 | </Target> | ||
| 340 | |||
| 341 | <Target Name="HarvestDirectory" | ||
| 342 | DependsOnTargets="$(HarvestDirectoryDependsOn)" | ||
| 343 | Inputs="@(_HarvestDirectoryContent);%(HarvestDirectory.Transforms)" | ||
| 344 | Outputs="$(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs" | ||
| 345 | Condition=" '@(HarvestDirectory)' != '' "> | ||
| 346 | |||
| 347 | <HeatDirectory | ||
| 348 | NoLogo="true" | ||
| 349 | SuppressAllWarnings="$(HarvestDirectorySuppressAllWarnings)" | ||
| 350 | SuppressSpecificWarnings="$(HarvestDirectorySuppressSpecificWarnings)" | ||
| 351 | TreatWarningsAsErrors="$(HarvestDirectoryTreatWarningsAsErrors)" | ||
| 352 | TreatSpecificWarningsAsErrors="$(HarvestDirectoryTreatSpecificWarningsAsErrors)" | ||
| 353 | VerboseOutput="$(HarvestDirectoryVerboseOutput)" | ||
| 354 | AutogenerateGuids="$(HarvestDirectoryAutogenerateGuids)" | ||
| 355 | GenerateGuidsNow="$(HarvestDirectoryGenerateGuidsNow)" | ||
| 356 | OutputFile="$(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs" | ||
| 357 | SuppressFragments="$(HarvestDirectorySuppressFragments)" | ||
| 358 | SuppressUniqueIds="$(HarvestDirectorySuppressUniqueIds)" | ||
| 359 | Transforms="%(HarvestDirectory.Transforms)" | ||
| 360 | Directory="@(HarvestDirectory)" | ||
| 361 | ComponentGroupName="%(HarvestDirectory.ComponentGroupName)" | ||
| 362 | DirectoryRefId="%(HarvestDirectory.DirectoryRefId)" | ||
| 363 | KeepEmptyDirectories="%(HarvestDirectory.KeepEmptyDirectories)" | ||
| 364 | PreprocessorVariable="%(HarvestDirectory.PreprocessorVariable)" | ||
| 365 | SuppressCom="%(HarvestDirectory.SuppressCom)" | ||
| 366 | SuppressRootDirectory="%(HarvestDirectory.SuppressRootDirectory)" | ||
| 367 | SuppressRegistry="%(HarvestDirectory.SuppressRegistry)" | ||
| 368 | AdditionalOptions="$(HarvestDirectoryAdditionalOptions)"> | ||
| 369 | |||
| 370 | <Output TaskParameter="OutputFile" ItemName="Compile" /> | ||
| 371 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> | ||
| 372 | |||
| 373 | </HeatDirectory> | ||
| 374 | |||
| 375 | </Target> | ||
| 376 | |||
| 377 | <!-- | ||
| 378 | ================================================================================================ | ||
| 379 | HarvestFile | ||
| 380 | |||
| 381 | Harvests files of different types using heat.exe. This can harvest registry from | ||
| 382 | self-registering files, files with typelibs, and more. | ||
| 383 | |||
| 384 | [IN] | ||
| 385 | @(HarvestFile) - The list of files to harvest. | ||
| 386 | %(HarvestFile.Transforms) - XSL transforms to apply to the harvested WiX. | ||
| 387 | %(HarvestFile.ComponentGroupName) - The name of the ComponentGroup to create. | ||
| 388 | %(HarvestFile.DirectoryRefId) - The ID of the directory to reference instead of TARGETDIR. | ||
| 389 | %(HarvestFile.PreprocessorVariable) - Substitute SourceDir for another variable name (ex: var.Dir). | ||
| 390 | %(HarvestFile.SuppressCom) - Suppress COM elements. | ||
| 391 | %(HarvestFile.SuppressRootDirectory) - Suppress a Directory element for the root directory. | ||
| 392 | $(HarvestFile.SuppressRegistry) - Suppress registry harvesting. | ||
| 393 | |||
| 394 | [OUT] | ||
| 395 | $(IntermediateOutputPath)_%(HarvestFile.Filename)_file.wxs | ||
| 396 | - The generated .wxs files which are added to the @(Compile) item list. | ||
| 397 | ================================================================================================ | ||
| 398 | --> | ||
| 399 | |||
| 400 | <ItemDefinitionGroup> | ||
| 401 | <HarvestFile> | ||
| 402 | <Transforms>$(HarvestFileTransforms)</Transforms> | ||
| 403 | <ComponentGroupName>$(HarvestFileComponentGroupName)</ComponentGroupName> | ||
| 404 | <DirectoryRefId>$(HarvestFileDirectoryRefId)</DirectoryRefId> | ||
| 405 | <PreprocessorVariable>$(HarvestFilePreprocessorVariable)</PreprocessorVariable> | ||
| 406 | <SuppressCom>$(HarvestFileSuppressCom)</SuppressCom> | ||
| 407 | <SuppressRegistry>$(HarvestFileSuppressRegistry)</SuppressRegistry> | ||
| 408 | <SuppressRootDirectory>$(HarvestFileSuppressRootDirectory)</SuppressRootDirectory> | ||
| 409 | </HarvestFile> | ||
| 410 | </ItemDefinitionGroup> | ||
| 411 | |||
| 412 | <PropertyGroup> | ||
| 413 | <HarvestFileDependsOn></HarvestFileDependsOn> | ||
| 414 | </PropertyGroup> | ||
| 415 | <Target Name="HarvestFile" | ||
| 416 | DependsOnTargets="$(HarvestFileDependsOn)" | ||
| 417 | Inputs="@(HarvestFile);%(HarvestFile.Transforms)" | ||
| 418 | Outputs="@(HarvestFile->'$(IntermediateOutputPath)_%(ComponentGroupName)_%(DirectoryRefId)_%(Filename)%(Extension)_file.wxs')" | ||
| 419 | Condition=" '@(HarvestFile)' != '' "> | ||
| 420 | |||
| 421 | <HeatFile | ||
| 422 | NoLogo="true" | ||
| 423 | SuppressAllWarnings="$(HarvestFileSuppressAllWarnings)" | ||
| 424 | SuppressSpecificWarnings="$(HarvestFileSuppressSpecificWarnings)" | ||
| 425 | TreatWarningsAsErrors="$(HarvestFileTreatWarningsAsErrors)" | ||
| 426 | TreatSpecificWarningsAsErrors="$(HarvestFileTreatSpecificWarningsAsErrors)" | ||
| 427 | VerboseOutput="$(HarvestFileVerboseOutput)" | ||
| 428 | AutogenerateGuids="$(HarvestFileAutogenerateGuids)" | ||
| 429 | GenerateGuidsNow="$(HarvestFileGenerateGuidsNow)" | ||
| 430 | OutputFile="$(IntermediateOutputPath)_%(HarvestFile.ComponentGroupName)_%(HarvestFile.DirectoryRefId)_%(HarvestFile.Filename)%(HarvestFile.Extension)_file.wxs" | ||
| 431 | SuppressFragments="$(HarvestFileSuppressFragments)" | ||
| 432 | SuppressUniqueIds="$(HarvestFileSuppressUniqueIds)" | ||
| 433 | Transforms="%(HarvestFile.Transforms)" | ||
| 434 | File="@(HarvestFile)" | ||
| 435 | ComponentGroupName="%(HarvestFile.ComponentGroupName)" | ||
| 436 | DirectoryRefId="%(HarvestFile.DirectoryRefId)" | ||
| 437 | PreprocessorVariable="%(HarvestFile.PreprocessorVariable)" | ||
| 438 | SuppressCom="%(HarvestFile.SuppressCom)" | ||
| 439 | SuppressRegistry="%(HarvestFile.SuppressRegistry)" | ||
| 440 | SuppressRootDirectory="%(HarvestFile.SuppressRootDirectory)" | ||
| 441 | AdditionalOptions="$(HarvestFileAdditionalOptions)"> | ||
| 442 | |||
| 443 | <Output TaskParameter="OutputFile" ItemName="Compile" /> | ||
| 444 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> | ||
| 445 | |||
| 446 | </HeatFile> | ||
| 447 | |||
| 448 | </Target> | ||
| 449 | |||
| 450 | <!-- | ||
| 451 | ================================================================================================ | ||
| 452 | RefreshGeneratedFile | ||
| 453 | |||
| 454 | Generates code based on metadata defined in project references. | ||
| 455 | |||
| 456 | [IN] | ||
| 457 | @(_MSBuildResolvedProjectReferencePaths) - The list of MSBuildable project references. | ||
| 458 | |||
| 459 | [OUT] | ||
| 460 | @(_GeneratedFiles) - The generated source file. | ||
| 461 | ================================================================================================ | ||
| 462 | --> | ||
| 463 | <PropertyGroup> | ||
| 464 | <RefreshGeneratedFileDependsOn></RefreshGeneratedFileDependsOn> | ||
| 465 | </PropertyGroup> | ||
| 466 | <Target Name="RefreshGeneratedFile" | ||
| 467 | DependsOnTargets="$(RefreshGeneratedFileDependsOn)" | ||
| 468 | Inputs="@(_MSBuildResolvedProjectReferencePaths);@(Compile);$(ProjectPath)" | ||
| 469 | Outputs="@(_GeneratedFiles)" | ||
| 470 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Package' or '$(OutputType)' == 'PatchCreation' or '$(OutputType)' == 'Module') and '@(_GeneratedFiles)' != '' "> | ||
| 471 | |||
| 472 | <RefreshGeneratedFile | ||
| 473 | GeneratedFiles="@(_GeneratedFiles)" | ||
| 474 | ProjectReferencePaths="@(_MSBuildResolvedProjectReferencePaths)" /> | ||
| 475 | |||
| 476 | </Target> | ||
| 477 | |||
| 478 | <!-- | ||
| 479 | ================================================================================================ | ||
| 480 | RefreshBundleGeneratedFile | ||
| 481 | |||
| 482 | Generates code for bundle projects based on metadata defined in project references. | ||
| 483 | |||
| 484 | [IN] | ||
| 485 | @(_MSBuildResolvedProjectReferencePaths) - The list of MSBuildable project references. | ||
| 486 | |||
| 487 | [OUT] | ||
| 488 | @(_GeneratedFiles) - The generated source file. | ||
| 489 | ================================================================================================ | ||
| 490 | --> | ||
| 491 | <PropertyGroup> | ||
| 492 | <RefreshBundleGeneratedFileDependsOn></RefreshBundleGeneratedFileDependsOn> | ||
| 493 | </PropertyGroup> | ||
| 494 | <Target Name="RefreshBundleGeneratedFile" | ||
| 495 | DependsOnTargets="$(RefreshBundleGeneratedFileDependsOn)" | ||
| 496 | Inputs="@(_MSBuildResolvedProjectReferencePaths);@(Compile);$(ProjectPath)" | ||
| 497 | Outputs="@(_GeneratedFiles)" | ||
| 498 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Bundle' and '@(_GeneratedFiles)' != '') "> | ||
| 499 | |||
| 500 | <RefreshBundleGeneratedFile | ||
| 501 | GeneratedFiles="@(_GeneratedFiles)" | ||
| 502 | ProjectReferencePaths="@(_MSBuildResolvedProjectReferencePaths)" /> | ||
| 503 | </Target> | ||
| 504 | |||
| 505 | </Project> | ||
diff --git a/src/WixToolset.BuildTasks/wix.signing.targets b/src/WixToolset.BuildTasks/wix.signing.targets deleted file mode 100644 index 7c25175f..00000000 --- a/src/WixToolset.BuildTasks/wix.signing.targets +++ /dev/null | |||
| @@ -1,370 +0,0 @@ | |||
| 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"> | ||
| 5 | <PropertyGroup> | ||
| 6 | <SignedFileName Condition=" '$(SignedFileName)' == '' ">$(MSBuildProjectFile).Signed.txt</SignedFileName> | ||
| 7 | <SignedFilePath>$(IntermediateOutputPath)$(SignedFileName)</SignedFilePath> | ||
| 8 | </PropertyGroup> | ||
| 9 | |||
| 10 | <UsingTask TaskName="Insignia" AssemblyFile="$(WixTasksPath)" /> | ||
| 11 | <UsingTask TaskName="GetCabList" AssemblyFile="$(WixTasksPath)" /> | ||
| 12 | <UsingTask TaskName="GetLooseFileList" AssemblyFile="$(WixTasksPath)" /> | ||
| 13 | |||
| 14 | <!-- Default Inscribe properties. --> | ||
| 15 | <PropertyGroup> | ||
| 16 | <InscribeNoLogo Condition=" '$(InscribeNoLogo)' == '' ">$(NoLogo)</InscribeNoLogo> | ||
| 17 | <InscribeSuppressAllWarnings Condition=" '$(InscribeSuppressAllWarnings)' == '' ">$(SuppressAllWarnings)</InscribeSuppressAllWarnings> | ||
| 18 | <InscribeSuppressSpecificWarnings Condition=" '$(InscribeSuppressSpecificWarnings)' == '' ">$(SuppressSpecificWarnings)</InscribeSuppressSpecificWarnings> | ||
| 19 | <InscribeTreatWarningsAsErrors Condition=" '$(InscribeTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</InscribeTreatWarningsAsErrors> | ||
| 20 | <InscribeTreatSpecificWarningsAsErrors Condition=" '$(InscribeTreatSpecificWarningsAsErrors)' == '' ">$(TreatSpecificWarningsAsErrors)</InscribeTreatSpecificWarningsAsErrors> | ||
| 21 | <InscribeVerboseOutput Condition=" '$(InscribeVerboseOutput)' == '' ">$(VerboseOutput)</InscribeVerboseOutput> | ||
| 22 | </PropertyGroup> | ||
| 23 | |||
| 24 | <!-- | ||
| 25 | ================================================================================================== | ||
| 26 | Signing | ||
| 27 | ================================================================================================== | ||
| 28 | --> | ||
| 29 | <PropertyGroup> | ||
| 30 | <InternalSignDependsOn Condition=" '$(OutputType)' == 'Module' "> | ||
| 31 | GetMsmsToSign; | ||
| 32 | InternalSignMsm; | ||
| 33 | </InternalSignDependsOn> | ||
| 34 | <InternalSignDependsOn Condition=" '$(OutputType)' == 'Package' "> | ||
| 35 | GetCabsToSign; | ||
| 36 | GetMsiToSign; | ||
| 37 | InternalSignCabs; | ||
| 38 | InscribeMsi; | ||
| 39 | InternalSignMsi; | ||
| 40 | </InternalSignDependsOn> | ||
| 41 | <InternalSignDependsOn Condition=" '$(OutputType)' == 'Bundle' "> | ||
| 42 | GetContainersToSign; | ||
| 43 | InternalSignContainers; | ||
| 44 | InscribeBundleEngine; | ||
| 45 | InternalSignBundleEngine; | ||
| 46 | InscribeBundle; | ||
| 47 | InternalSignBundle; | ||
| 48 | </InternalSignDependsOn> | ||
| 49 | |||
| 50 | <SigningDependsOn> | ||
| 51 | WixBuild; | ||
| 52 | CalculateSignTargetFiles; | ||
| 53 | BeforeSigning; | ||
| 54 | $(InternalSignDependsOn); | ||
| 55 | AfterSigning | ||
| 56 | </SigningDependsOn> | ||
| 57 | </PropertyGroup> | ||
| 58 | <Target | ||
| 59 | Name="Signing" | ||
| 60 | DependsOnTargets="$(SigningDependsOn)" | ||
| 61 | Inputs="$(TargetPath)" | ||
| 62 | Outputs="$(SignedFilePath)" | ||
| 63 | Condition=" '$(SignOutput)' == 'true' "> | ||
| 64 | |||
| 65 | <ItemGroup> | ||
| 66 | <FileWrites Include="$(SignedFilePath)" /> | ||
| 67 | </ItemGroup> | ||
| 68 | |||
| 69 | <WriteLinesToFile | ||
| 70 | File="$(SignedFilePath)" | ||
| 71 | Lines="^$(MSBuildProjectFullPath);@(SignMsm);@(SignCabs);@(SignMsi);@(SignContainers);@(SignBundleEngine);@(SignBundle)" | ||
| 72 | Overwrite="true" /> | ||
| 73 | </Target> | ||
| 74 | |||
| 75 | <!-- Internal targets so correct signing targets are called. --> | ||
| 76 | <Target | ||
| 77 | Name="CalculateSignTargetFiles"> | ||
| 78 | <ItemGroup> | ||
| 79 | <SignTargetPath Include="$(TargetPath)" /> | ||
| 80 | </ItemGroup> | ||
| 81 | </Target> | ||
| 82 | |||
| 83 | <Target | ||
| 84 | Name="GetMsmsToSign" | ||
| 85 | Inputs="@(SignTargetPath)" | ||
| 86 | Outputs="$(SignedFilePath)"> | ||
| 87 | |||
| 88 | <ItemGroup> | ||
| 89 | <SignMsm Include="@(SignTargetPath)" /> | ||
| 90 | </ItemGroup> | ||
| 91 | </Target> | ||
| 92 | |||
| 93 | <Target | ||
| 94 | Name="InternalSignMsm" | ||
| 95 | DependsOnTargets="SignMsm" | ||
| 96 | Condition=" '@(SignMsm)' != '' " /> | ||
| 97 | |||
| 98 | <Target | ||
| 99 | Name="GetCabsToSign" | ||
| 100 | Inputs="@(SignTargetPath)" | ||
| 101 | Outputs="$(SignedFilePath)"> | ||
| 102 | <GetCabList Database="%(SignTargetPath.FullPath)"> | ||
| 103 | <Output TaskParameter="CabList" ItemName="SignCabs" /> | ||
| 104 | <Output TaskParameter="CabList" ItemName="FileWrites" /> | ||
| 105 | </GetCabList> | ||
| 106 | </Target> | ||
| 107 | |||
| 108 | <Target | ||
| 109 | Name="InternalSignCabs" | ||
| 110 | DependsOnTargets="SignCabs" | ||
| 111 | Condition=" '@(SignCabs)' != '' " /> | ||
| 112 | |||
| 113 | <Target | ||
| 114 | Name="GetMsiToSign" | ||
| 115 | Inputs="@(SignTargetPath)" | ||
| 116 | Outputs="$(SignedFilePath)"> | ||
| 117 | <CreateItemAvoidingInference InputProperties="@(SignTargetPath)"> | ||
| 118 | <Output TaskParameter="OuputItems" ItemName="SignMsi" /> | ||
| 119 | <Output TaskParameter="OuputItems" ItemName="FileWrites" /> | ||
| 120 | </CreateItemAvoidingInference> | ||
| 121 | </Target> | ||
| 122 | |||
| 123 | <Target | ||
| 124 | Name="InternalSignMsi" | ||
| 125 | DependsOnTargets="SignMsi" | ||
| 126 | Inputs="@(SignTargetPath)" | ||
| 127 | Outputs="$(SignedFilePath)" | ||
| 128 | Condition=" '@(SignMsi)' != '' " /> | ||
| 129 | |||
| 130 | <Target | ||
| 131 | Name="GetContainersToSign" | ||
| 132 | Inputs="@(SignTargetPath)" | ||
| 133 | Outputs="$(SignedFilePath)"> | ||
| 134 | <!-- TODO: implement signing detached containers --> | ||
| 135 | </Target> | ||
| 136 | |||
| 137 | <Target | ||
| 138 | Name="InternalSignContainers" | ||
| 139 | DependsOnTargets="SignContainers" | ||
| 140 | Condition=" '@(SignContainers)' != '' " /> | ||
| 141 | |||
| 142 | <Target | ||
| 143 | Name="InternalSignBundleEngine" | ||
| 144 | DependsOnTargets="SignBundleEngine" | ||
| 145 | Condition=" '@(SignBundleEngine)' != '' " /> | ||
| 146 | |||
| 147 | <Target | ||
| 148 | Name="InternalSignBundle" | ||
| 149 | DependsOnTargets="SignBundle" | ||
| 150 | Condition=" '@(SignBundle)' != '' " /> | ||
| 151 | |||
| 152 | <!-- | ||
| 153 | ================================================================================================ | ||
| 154 | InscribeMsi | ||
| 155 | |||
| 156 | To be called after signing an MSI's cabs - inscribes an MSI with the digital signature of its | ||
| 157 | external cabs. | ||
| 158 | |||
| 159 | [IN/OUT] | ||
| 160 | @(SignTargetPath) - The database file to inscribe - database file will be modified in-place. | ||
| 161 | |||
| 162 | [OUT] | ||
| 163 | @(SignMsi) - The database file to sign. | ||
| 164 | ================================================================================================ | ||
| 165 | --> | ||
| 166 | <PropertyGroup> | ||
| 167 | <InscribeMsiDependsOn> | ||
| 168 | </InscribeMsiDependsOn> | ||
| 169 | </PropertyGroup> | ||
| 170 | <Target | ||
| 171 | Name="InscribeMsi" | ||
| 172 | DependsOnTargets="$(InscribeMsiDependsOn)" | ||
| 173 | Inputs="@(SignTargetPath)" | ||
| 174 | Outputs="$(SignedFilePath)" | ||
| 175 | Condition=" '@(SignCabs)' != '' "> | ||
| 176 | |||
| 177 | <Insignia | ||
| 178 | DatabaseFile="%(SignTargetPath.FullPath)" | ||
| 179 | OutputFile="%(SignTargetPath.FullPath)" | ||
| 180 | ToolPath="$(WixToolPath)" | ||
| 181 | NoLogo="$(InscribeNoLogo)" | ||
| 182 | RunAsSeparateProcess="$(RunWixToolsOutOfProc)" | ||
| 183 | SuppressAllWarnings="$(InscribeSuppressAllWarnings)" | ||
| 184 | SuppressSpecificWarnings="$(InscribeSuppressSpecificWarnings)" | ||
| 185 | TreatWarningsAsErrors="$(InscribeTreatWarningsAsErrors)" | ||
| 186 | TreatSpecificWarningsAsErrors="$(InscribeTreatSpecificWarningsAsErrors)" | ||
| 187 | VerboseOutput="$(InscribeVerboseOutput)" | ||
| 188 | AdditionalOptions="$(InscribeAdditionalOptions)" /> | ||
| 189 | </Target> | ||
| 190 | |||
| 191 | <!-- | ||
| 192 | ================================================================================================ | ||
| 193 | InscribeBundleEngine | ||
| 194 | |||
| 195 | To be called after signing a bundle's detached containers. Also removes attached container | ||
| 196 | so engine can be signed without attached container. | ||
| 197 | |||
| 198 | [IN] | ||
| 199 | @(SignTargetPath) - The bundle to inscribe. | ||
| 200 | |||
| 201 | [OUT] | ||
| 202 | @(SignBundleEngine) - The bundle engine file to be signed. | ||
| 203 | ================================================================================================ | ||
| 204 | --> | ||
| 205 | <PropertyGroup> | ||
| 206 | <InscribeBundleEngineDependsOn> | ||
| 207 | </InscribeBundleEngineDependsOn> | ||
| 208 | </PropertyGroup> | ||
| 209 | <Target | ||
| 210 | Name="InscribeBundleEngine" | ||
| 211 | DependsOnTargets="$(InscribeBundleEngineDependsOn)" | ||
| 212 | Inputs="@(SignTargetPath)" | ||
| 213 | Outputs="$(SignedFilePath)"> | ||
| 214 | |||
| 215 | <Insignia | ||
| 216 | BundleFile="@(SignTargetPath)" | ||
| 217 | OutputFile="$(IntermediateOutputPath)%(SignTargetPath.Filename)%(SignTargetPath.Extension)" | ||
| 218 | ToolPath="$(WixToolPath)" | ||
| 219 | NoLogo="$(InscribeNoLogo)" | ||
| 220 | RunAsSeparateProcess="$(RunWixToolsOutOfProc)" | ||
| 221 | SuppressAllWarnings="$(InscribeSuppressAllWarnings)" | ||
| 222 | SuppressSpecificWarnings="$(InscribeSuppressSpecificWarnings)" | ||
| 223 | TreatWarningsAsErrors="$(InscribeTreatWarningsAsErrors)" | ||
| 224 | TreatSpecificWarningsAsErrors="$(InscribeTreatSpecificWarningsAsErrors)" | ||
| 225 | VerboseOutput="$(InscribeVerboseOutput)" | ||
| 226 | AdditionalOptions="$(InscribeAdditionalOptions)"> | ||
| 227 | <Output TaskParameter="Output" ItemName="SignBundleEngine" /> | ||
| 228 | </Insignia> | ||
| 229 | |||
| 230 | <!-- Explicitly add output to FileWrites to ensure they are included even when the target is up to date. --> | ||
| 231 | <ItemGroup> | ||
| 232 | <FileWrites Include="$(IntermediateOutputPath)%(SignTargetPath.Filename)%(SignTargetPath.Extension)" /> | ||
| 233 | </ItemGroup> | ||
| 234 | </Target> | ||
| 235 | |||
| 236 | <!-- | ||
| 237 | ================================================================================================ | ||
| 238 | InscribeBundle | ||
| 239 | |||
| 240 | To be called after signing the bundle engine to reattach the attached container. | ||
| 241 | |||
| 242 | [IN] | ||
| 243 | @(Inscribe) - The bundle to inscribe. | ||
| 244 | |||
| 245 | [OUT] | ||
| 246 | @(SignBundle) - The bundle engine file to be signed. | ||
| 247 | ================================================================================================ | ||
| 248 | --> | ||
| 249 | <PropertyGroup> | ||
| 250 | <InscribeBundleDependsOn> | ||
| 251 | </InscribeBundleDependsOn> | ||
| 252 | </PropertyGroup> | ||
| 253 | <Target | ||
| 254 | Name="InscribeBundle" | ||
| 255 | DependsOnTargets="$(InscribeBundleDependsOn)" | ||
| 256 | Inputs="@(SignTargetPath)" | ||
| 257 | Outputs="$(SignedFilePath)"> | ||
| 258 | |||
| 259 | <Insignia | ||
| 260 | BundleFile="@(SignBundleEngine)" | ||
| 261 | OriginalBundleFile="@(SignTargetPath)" | ||
| 262 | OutputFile="@(SignTargetPath)" | ||
| 263 | ToolPath="$(WixToolPath)" | ||
| 264 | NoLogo="$(InscribeNoLogo)" | ||
| 265 | RunAsSeparateProcess="$(RunWixToolsOutOfProc)" | ||
| 266 | SuppressAllWarnings="$(InscribeSuppressAllWarnings)" | ||
| 267 | SuppressSpecificWarnings="$(InscribeSuppressSpecificWarnings)" | ||
| 268 | TreatWarningsAsErrors="$(InscribeTreatWarningsAsErrors)" | ||
| 269 | TreatSpecificWarningsAsErrors="$(InscribeTreatSpecificWarningsAsErrors)" | ||
| 270 | VerboseOutput="$(InscribeVerboseOutput)" | ||
| 271 | AdditionalOptions="$(InscribeAdditionalOptions)"> | ||
| 272 | <Output TaskParameter="Output" ItemName="SignBundle" /> | ||
| 273 | <Output TaskParameter="Output" ItemName="FileWrites" /> | ||
| 274 | </Insignia> | ||
| 275 | </Target> | ||
| 276 | |||
| 277 | <!-- | ||
| 278 | ================================================================================================== | ||
| 279 | BeforeSigning | ||
| 280 | |||
| 281 | Redefine this target in your project in order to run tasks just before all signing tasks. | ||
| 282 | ================================================================================================== | ||
| 283 | --> | ||
| 284 | <Target Name="BeforeSigning" /> | ||
| 285 | |||
| 286 | <!-- | ||
| 287 | ================================================================================================== | ||
| 288 | SignMsm | ||
| 289 | |||
| 290 | Redefine this target in your project in order to sign merge modules. | ||
| 291 | |||
| 292 | [IN] | ||
| 293 | @(SignMsm) - merge module files to sign. | ||
| 294 | ================================================================================================== | ||
| 295 | --> | ||
| 296 | <Target Name="SignMsm" /> | ||
| 297 | |||
| 298 | <!-- | ||
| 299 | ================================================================================================== | ||
| 300 | SignCabs | ||
| 301 | |||
| 302 | Redefine this target in your project in order to sign the cabs of your database. | ||
| 303 | |||
| 304 | [IN] | ||
| 305 | @(SignCabs) - cabinet files to sign. | ||
| 306 | ================================================================================================== | ||
| 307 | --> | ||
| 308 | <Target Name="SignCabs" /> | ||
| 309 | |||
| 310 | <!-- | ||
| 311 | ================================================================================================== | ||
| 312 | SignMsi | ||
| 313 | |||
| 314 | Redefine this target in your project in order to sign your database, after it has been inscribed | ||
| 315 | with the signatures of your signed cabs. | ||
| 316 | |||
| 317 | [IN] | ||
| 318 | @(SignMsi) - database files to sign. | ||
| 319 | ================================================================================================== | ||
| 320 | --> | ||
| 321 | <Target Name="SignMsi" /> | ||
| 322 | |||
| 323 | <!-- | ||
| 324 | ================================================================================================== | ||
| 325 | SignContainers | ||
| 326 | |||
| 327 | Redefine this target in your project in order to sign your bundle's detached containers. | ||
| 328 | |||
| 329 | [IN] | ||
| 330 | @(SignContainers) - detached container files to sign. | ||
| 331 | ================================================================================================== | ||
| 332 | --> | ||
| 333 | <Target Name="SignContainers" /> | ||
| 334 | |||
| 335 | <!-- | ||
| 336 | ================================================================================================== | ||
| 337 | SignBundleEngine | ||
| 338 | |||
| 339 | Redefine this target in your project in order to sign your bundle, after it has been inscribed | ||
| 340 | with the signatures of your signed containers. | ||
| 341 | |||
| 342 | [IN] | ||
| 343 | @(SignBundleEngine) - bundle engine file to sign. | ||
| 344 | ================================================================================================== | ||
| 345 | --> | ||
| 346 | <Target Name="SignBundleEngine" /> | ||
| 347 | |||
| 348 | <!-- | ||
| 349 | ================================================================================================== | ||
| 350 | SignBundle | ||
| 351 | |||
| 352 | Redefine this target in your project in order to sign your bundle, after the attached container | ||
| 353 | is reattached. | ||
| 354 | |||
| 355 | [IN] | ||
| 356 | @(SignBundle) - bundle file to sign. | ||
| 357 | ================================================================================================== | ||
| 358 | --> | ||
| 359 | <Target Name="SignBundle" /> | ||
| 360 | |||
| 361 | <!-- | ||
| 362 | ================================================================================================== | ||
| 363 | AfterSigning | ||
| 364 | |||
| 365 | Redefine this target in your project in order to run tasks just after all signing tasks. | ||
| 366 | ================================================================================================== | ||
| 367 | --> | ||
| 368 | <Target Name="AfterSigning" /> | ||
| 369 | |||
| 370 | </Project> | ||
diff --git a/src/WixToolset.BuildTasks/wix.targets b/src/WixToolset.BuildTasks/wix.targets deleted file mode 100644 index b8d6bb34..00000000 --- a/src/WixToolset.BuildTasks/wix.targets +++ /dev/null | |||
| @@ -1,1063 +0,0 @@ | |||
| 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" InitialTargets="_CheckRequiredProperties" DefaultTargets="Build"> | ||
| 5 | <PropertyGroup> | ||
| 6 | <WixTargetsImported>true</WixTargetsImported> | ||
| 7 | </PropertyGroup> | ||
| 8 | |||
| 9 | <!-- | ||
| 10 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 11 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 12 | Extension Points | ||
| 13 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 14 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 15 | --> | ||
| 16 | |||
| 17 | <!-- Allow a user-customized targets files to be used as part of the build. --> | ||
| 18 | <Import Project="$(CustomBeforeWixTargets)" Condition=" '$(CustomBeforeWixTargets)' != '' and Exists('$(CustomBeforeWixTargets)')" /> | ||
| 19 | |||
| 20 | <!-- These properties can be overridden to support non-default installations. --> | ||
| 21 | <PropertyGroup> | ||
| 22 | <WixBinDir Condition=" '$(WixBinDir)' == ''">$(MSBuildThisFileDirectory)</WixBinDir> | ||
| 23 | <WixTasksPath Condition=" '$(WixTasksPath)' == '' ">$(WixBinDir)WixToolset.BuildTasks.dll</WixTasksPath> | ||
| 24 | <WixHarvestTargetsPath Condition=" '$(WixHarvestTargetsPath)' == '' ">$(WixBinDir)wix.harvest.targets</WixHarvestTargetsPath> | ||
| 25 | <WixSigningTargetsPath Condition=" '$(WixSigningTargetsPath)' == '' ">$(WixBinDir)wix.signing.targets</WixSigningTargetsPath> | ||
| 26 | <LuxTargetsPath Condition=" '$(LuxTargetsPath)' == '' ">$(WixBinDir)lux.targets</LuxTargetsPath> | ||
| 27 | <LuxTasksPath Condition=" '$(LuxTasksPath)' == '' ">$(WixBinDir)LuxTasks.dll</LuxTasksPath> | ||
| 28 | </PropertyGroup> | ||
| 29 | |||
| 30 | <!-- This makes the project files a dependency of all targets so that things rebuild if they change --> | ||
| 31 | <PropertyGroup> | ||
| 32 | <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> | ||
| 33 | <MSBuildAllProjects Condition="Exists('$(WixHarvestTargetsPath)')">$(MSBuildAllProjects);$(WixHarvestTargetsPath)</MSBuildAllProjects> | ||
| 34 | <MSBuildAllProjects Condition="Exists('$(WixSigningTargetsPath)')">$(MSBuildAllProjects);$(WixSigningTargetsPath)</MSBuildAllProjects> | ||
| 35 | <MSBuildAllProjects Condition="Exists('$(LuxTargetsPath)')">$(MSBuildAllProjects);$(LuxTargetsPath)</MSBuildAllProjects> | ||
| 36 | <MSBuildAllProjects Condition="Exists('$(CustomBeforeWixTargets)')">$(MSBuildAllProjects);$(CustomBeforeWixTargets)</MSBuildAllProjects> | ||
| 37 | <MSBuildAllProjects Condition="Exists('$(CustomAfterWixTargets)')">$(MSBuildAllProjects);$(CustomAfterWixTargets)</MSBuildAllProjects> | ||
| 38 | </PropertyGroup> | ||
| 39 | |||
| 40 | <!-- | ||
| 41 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 42 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 43 | Declarations for Microsoft.Common.targets | ||
| 44 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 45 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 46 | --> | ||
| 47 | |||
| 48 | <PropertyGroup> | ||
| 49 | <DefaultLanguageSourceExtension>.wxs</DefaultLanguageSourceExtension> | ||
| 50 | <Language>wix</Language> | ||
| 51 | <TargetRuntime>wix</TargetRuntime> | ||
| 52 | |||
| 53 | <!-- Use OutputName to set the AssemblyName for Microsoft.Common.targets --> | ||
| 54 | <OutputName Condition=" '$(OutputName)'=='' ">$(MSBuildProjectName)</OutputName> | ||
| 55 | <AssemblyName>$(OutputName)</AssemblyName> | ||
| 56 | |||
| 57 | <!-- Default OutputType to a known WiX Toolset type. --> | ||
| 58 | <OutputType Condition=" '$(OutputType)' == '' ">Package</OutputType> | ||
| 59 | |||
| 60 | <!-- Default WixPdbType to a known WiX Toolset type. --> | ||
| 61 | <WixPdbType Condition=" '$(WixPdbType)' == '' ">full</WixPdbType> | ||
| 62 | </PropertyGroup> | ||
| 63 | |||
| 64 | <!-- | ||
| 65 | IDE Macros available from both integrated builds and from command line builds. | ||
| 66 | The following properties are 'macros' that are available via IDE for pre and post build steps. | ||
| 67 | All of them should be added to WixBuildMacroCollection to ensure that they are shown in the UI. | ||
| 68 | --> | ||
| 69 | <PropertyGroup Condition=" '$(TargetExt)' == '' "> | ||
| 70 | <TargetExt Condition=" '$(OutputType)' == 'Package' ">.msi</TargetExt> | ||
| 71 | <TargetExt Condition=" '$(OutputType)' == 'Module' ">.msm</TargetExt> | ||
| 72 | <TargetExt Condition=" '$(OutputType)' == 'PatchCreation' ">.pcp</TargetExt> | ||
| 73 | <TargetExt Condition=" '$(OutputType)' == 'Library' ">.wixlib</TargetExt> | ||
| 74 | <TargetExt Condition=" '$(OutputType)' == 'Bundle' ">.exe</TargetExt> | ||
| 75 | <TargetExt Condition=" '$(OutputType)' == 'IntermediatePostLink' ">.wixipl</TargetExt> | ||
| 76 | </PropertyGroup> | ||
| 77 | |||
| 78 | <Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" /> | ||
| 79 | |||
| 80 | <PropertyGroup> | ||
| 81 | <!-- Default pdb output path to the intermediate output directory --> | ||
| 82 | <PdbOutputDir Condition=" '$(PdbOutputDir)'=='' ">$(TargetDir)</PdbOutputDir> | ||
| 83 | <PdbOutputDir Condition=" !HasTrailingSlash('$(PdbOutputDir)') ">$(PdbOutputDir)\</PdbOutputDir> | ||
| 84 | |||
| 85 | <!-- Example, C:\MyProjects\MyProject\bin\debug\ --> | ||
| 86 | <TargetPdbDir Condition=" '$(PdbOutputDir)'!='' ">$([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(PdbOutputDir)`))`))</TargetPdbDir> | ||
| 87 | |||
| 88 | <!-- Example, MySetup.wixpdb" --> | ||
| 89 | <TargetPdbFileName Condition=" '$(TargetPdbFileName)' == '' ">$(TargetName).wixpdb</TargetPdbFileName> | ||
| 90 | |||
| 91 | <!-- Example, C:\MyProjects\MyProject\bin\debug\MyPackage.wixpdb --> | ||
| 92 | <TargetPdbPath Condition=" '$(TargetPdbPath)' == '' ">$(TargetPdbDir)$(TargetPdbFileName)</TargetPdbPath> | ||
| 93 | </PropertyGroup> | ||
| 94 | |||
| 95 | <!-- | ||
| 96 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 97 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 98 | Property Declarations | ||
| 99 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 100 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 101 | --> | ||
| 102 | |||
| 103 | <!-- These tasks can be used as general-purpose build tasks. --> | ||
| 104 | <UsingTask TaskName="WixBuild" AssemblyFile="$(WixTasksPath)" /> | ||
| 105 | |||
| 106 | <!-- These tasks are specific to the build process defined in this file, and are not considered general-purpose build tasks. --> | ||
| 107 | <UsingTask TaskName="CreateItemAvoidingInference" AssemblyFile="$(WixTasksPath)" /> | ||
| 108 | <UsingTask TaskName="CreateProjectReferenceDefineConstants" AssemblyFile="$(WixTasksPath)" /> | ||
| 109 | <UsingTask TaskName="WixAssignCulture" AssemblyFile="$(WixTasksPath)" /> | ||
| 110 | <UsingTask TaskName="ResolveWixReferences" AssemblyFile="$(WixTasksPath)"/> | ||
| 111 | <UsingTask TaskName="ReplaceString" AssemblyFile="$(WixTasksPath)"/> | ||
| 112 | <UsingTask TaskName="GenerateCompileWithObjectPath" AssemblyFile="$(WixTasksPath)"/> | ||
| 113 | |||
| 114 | <PropertyGroup> | ||
| 115 | <BindContentsFile Condition=" '$(BindContentsFile)' == '' ">$(MSBuildProjectFile).BindContentsFileList.txt</BindContentsFile> | ||
| 116 | <BindOutputsFile Condition=" '$(BindOutputsFile)' == '' ">$(MSBuildProjectFile).BindOutputsFileList.txt</BindOutputsFile> | ||
| 117 | <BindBuiltOutputsFile Condition=" '$(BindBuiltOutputsFile)' == '' ">$(MSBuildProjectFile).BindBuiltOutputsFileList.txt</BindBuiltOutputsFile> | ||
| 118 | </PropertyGroup> | ||
| 119 | |||
| 120 | <PropertyGroup> | ||
| 121 | <CabinetCachePath Condition=" '$(CabinetCachePath)'=='' and '$(ReuseCabinetCache)'=='true' ">$(IntermediateOutputPath)cabcache\</CabinetCachePath> | ||
| 122 | </PropertyGroup> | ||
| 123 | |||
| 124 | <PropertyGroup> | ||
| 125 | <WixExtDir Condition=" '$(WixExtDir)' == ''">$(WixBinDir)</WixExtDir> | ||
| 126 | </PropertyGroup> | ||
| 127 | |||
| 128 | <!-- | ||
| 129 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 130 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 131 | Default Compiler, Linker, and Librarian Property Declarations | ||
| 132 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 133 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 134 | --> | ||
| 135 | |||
| 136 | <!-- If WixExtension was passed in via the command line, then convert it to an ItemGroup --> | ||
| 137 | <ItemGroup> | ||
| 138 | <WixExtension Include="$(WixExtension)" Condition=" '$(WixExtension)' != '' " /> | ||
| 139 | </ItemGroup> | ||
| 140 | |||
| 141 | <!-- Defaut Compiler properties. --> | ||
| 142 | <PropertyGroup> | ||
| 143 | <CompilerNoLogo Condition=" '$(CompilerNoLogo)' == '' ">$(NoLogo)</CompilerNoLogo> | ||
| 144 | <CompilerSuppressAllWarnings Condition=" '$(CompilerSuppressAllWarnings)' == '' ">$(SuppressAllWarnings)</CompilerSuppressAllWarnings> | ||
| 145 | <CompilerSuppressSpecificWarnings Condition=" '$(CompilerSuppressSpecificWarnings)' == '' ">$(SuppressSpecificWarnings)</CompilerSuppressSpecificWarnings> | ||
| 146 | <CompilerTreatWarningsAsErrors Condition=" '$(CompilerTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</CompilerTreatWarningsAsErrors> | ||
| 147 | <CompilerTreatSpecificWarningsAsErrors Condition=" '$(CompilerTreatSpecificWarningsAsErrors)' == '' ">$(TreatSpecificWarningsAsErrors)</CompilerTreatSpecificWarningsAsErrors> | ||
| 148 | <CompilerVerboseOutput Condition=" '$(CompilerVerboseOutput)' == '' ">$(VerboseOutput)</CompilerVerboseOutput> | ||
| 149 | <!-- TODO: This probably doesn't work any longer since Platform won't be defined until Microsoft.Common.targets is included --> | ||
| 150 | <InstallerPlatform Condition=" '$(InstallerPlatform)' == '' and '$(Platform)' != 'AnyCPU' and '$(Platform)' != 'Any CPU' ">$(Platform)</InstallerPlatform> | ||
| 151 | </PropertyGroup> | ||
| 152 | |||
| 153 | <!-- Default Lib properties. --> | ||
| 154 | <PropertyGroup> | ||
| 155 | <LibNoLogo Condition=" '$(LibNoLogo)' == '' ">$(NoLogo)</LibNoLogo> | ||
| 156 | <LibBindFiles Condition=" '$(LibBindFiles)' == '' ">$(BindFiles)</LibBindFiles> | ||
| 157 | <LibPedantic Condition=" '$(LibPedantic)' == '' ">$(Pedantic)</LibPedantic> | ||
| 158 | <LibSuppressAllWarnings Condition=" '$(LibSuppressAllWarnings)' == '' ">$(SuppressAllWarnings)</LibSuppressAllWarnings> | ||
| 159 | <LibSuppressSpecificWarnings Condition=" '$(LibSuppressSpecificWarnings)' == '' ">$(SuppressSpecificWarnings)</LibSuppressSpecificWarnings> | ||
| 160 | <LibSuppressSchemaValidation Condition=" '$(LibSuppressSchemaValidation)' == '' ">$(SuppressSchemaValidation)</LibSuppressSchemaValidation> | ||
| 161 | <LibSuppressIntermediateFileVersionMatching Condition=" '$(LibSuppressIntermediateFileVersionMatching)' == '' ">$(SuppressIntermediateFileVersionMatching)</LibSuppressIntermediateFileVersionMatching> | ||
| 162 | <LibTreatWarningsAsErrors Condition=" '$(LibTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</LibTreatWarningsAsErrors> | ||
| 163 | <LibTreatSpecificWarningsAsErrors Condition=" '$(LibTreatSpecificWarningsAsErrors)' == '' ">$(TreatSpecificWarningsAsErrors)</LibTreatSpecificWarningsAsErrors> | ||
| 164 | <LibVerboseOutput Condition=" '$(LibVerboseOutput)' == '' ">$(VerboseOutput)</LibVerboseOutput> | ||
| 165 | </PropertyGroup> | ||
| 166 | |||
| 167 | <!-- Default Linker properties. --> | ||
| 168 | <PropertyGroup> | ||
| 169 | <LinkerNoLogo Condition=" '$(LinkerNoLogo)' == '' ">$(NoLogo)</LinkerNoLogo> | ||
| 170 | <LinkerBindFiles Condition=" '$(LinkerBindFiles)' == '' ">$(BindFiles)</LinkerBindFiles> | ||
| 171 | <LinkerPedantic Condition=" '$(LinkerPedantic)' == '' ">$(Pedantic)</LinkerPedantic> | ||
| 172 | <LinkerSuppressAllWarnings Condition=" '$(LinkerSuppressAllWarnings)' == '' ">$(SuppressAllWarnings)</LinkerSuppressAllWarnings> | ||
| 173 | <LinkerSuppressSpecificWarnings Condition=" '$(LinkerSuppressSpecificWarnings)' == '' ">$(SuppressSpecificWarnings)</LinkerSuppressSpecificWarnings> | ||
| 174 | <LinkerSuppressSchemaValidation Condition=" '$(LinkerSuppressSchemaValidation)' == '' ">$(SuppressSchemaValidation)</LinkerSuppressSchemaValidation> | ||
| 175 | <LinkerSuppressIntermediateFileVersionMatching Condition=" '$(LinkerSuppressIntermediateFileVersionMatching)' == '' ">$(SuppressIntermediateFileVersionMatching)</LinkerSuppressIntermediateFileVersionMatching> | ||
| 176 | <LinkerTreatWarningsAsErrors Condition=" '$(LinkerTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</LinkerTreatWarningsAsErrors> | ||
| 177 | <LinkerTreatSpecificWarningsAsErrors Condition=" '$(LinkerTreatSpecificWarningsAsErrors)' == '' ">$(TreatSpecificWarningsAsErrors)</LinkerTreatSpecificWarningsAsErrors> | ||
| 178 | <LinkerVerboseOutput Condition=" '$(LinkerVerboseOutput)' == '' ">$(VerboseOutput)</LinkerVerboseOutput> | ||
| 179 | </PropertyGroup> | ||
| 180 | |||
| 181 | <!-- If BindInputPaths (or LinkerBindInputPaths) was passed in via the command line, then convert it to an ItemGroup --> | ||
| 182 | <ItemGroup> | ||
| 183 | <BindInputPaths Include="$(BindInputPaths)" Condition=" '$(BindInputPaths)' != '' " /> | ||
| 184 | <LinkerBindInputPaths Include="$(LinkerBindInputPaths)" Condition=" '$(LinkerBindInputPaths)' != '' " /> | ||
| 185 | </ItemGroup> | ||
| 186 | |||
| 187 | <!-- Default Lit and Light "properties" --> | ||
| 188 | <ItemGroup> | ||
| 189 | <LinkerBindInputPaths Condition=" '@(LinkerBindInputPaths)' == '' " Include="@(BindInputPaths)" /> | ||
| 190 | </ItemGroup> | ||
| 191 | |||
| 192 | <!-- | ||
| 193 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 194 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 195 | Initial Targets | ||
| 196 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 197 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 198 | --> | ||
| 199 | |||
| 200 | <!-- | ||
| 201 | ================================================================================================== | ||
| 202 | _CheckRequiredProperties | ||
| 203 | |||
| 204 | Checks properties that must be set in the main project file or on the command line before | ||
| 205 | using this .TARGETS file. | ||
| 206 | |||
| 207 | [IN] | ||
| 208 | $(OutputName) - The name of the MSI/MSM/wixlib to build (without the extension) | ||
| 209 | $(OutputType) - Possible values are 'Package', 'PatchCreation', 'Module', 'Library', 'Bundle', 'IntermediatePostLink' | ||
| 210 | ================================================================================================== | ||
| 211 | --> | ||
| 212 | <PropertyGroup> | ||
| 213 | <_PleaseSetThisInProjectFile>Please set this in the project file before the <Import> of the wix.targets file.</_PleaseSetThisInProjectFile> | ||
| 214 | <_OutputTypeDescription>Possible values are: 'Package', 'Module', 'Library', 'Bundle', 'IntermediatePostLink'. $(_PleaseSetThisInProjectFile)</_OutputTypeDescription> | ||
| 215 | </PropertyGroup> | ||
| 216 | <Target Name="_CheckRequiredProperties"> | ||
| 217 | |||
| 218 | <Error | ||
| 219 | Code="WIX100" | ||
| 220 | Condition=" '$(OutputName)' == '' " | ||
| 221 | Text="The OutputName property is not set in project "$(MSBuildProjectFile)". The OutputName defines the name of the output without a file extension. $(_PleaseSetThisInProjectFile)" /> | ||
| 222 | |||
| 223 | <Error | ||
| 224 | Code="WIX101" | ||
| 225 | Condition=" '$(OutputType)' != 'Package' and '$(OutputType)' != 'PatchCreation' and '$(OutputType)' != 'Module' and '$(OutputType)' != 'Library' and '$(OutputType)' != 'Bundle' and '$(OutputType)' != 'IntermediatePostLink' " | ||
| 226 | Text="The OutputType property '$(OutputType)' is not valid in project "$(MSBuildProjectFile)". $(_OutputTypeDescription)" /> | ||
| 227 | |||
| 228 | <Error | ||
| 229 | Code="WIX102" | ||
| 230 | Condition=" '$(MSBuildToolsVersion)' == '' OR '$(MSBuildToolsVersion)' < '4.0' " | ||
| 231 | Text="MSBuild v$(MSBuildToolsVersion) is not supported by the project "$(MSBuildProjectFile)". You must use MSBuild v4.0 or later." /> | ||
| 232 | |||
| 233 | <Error | ||
| 234 | Code="WIX103" | ||
| 235 | Condition=" '$(WixPdbType)' != 'none' and '$(WixPdbType)' != 'full' " | ||
| 236 | Text="The WixPdbType property '$(WixPdbType)' is not valid in project "$(MSBuildProjectFile)". Supported values are: 'full', 'none'" /> | ||
| 237 | |||
| 238 | </Target> | ||
| 239 | |||
| 240 | <!-- | ||
| 241 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 242 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 243 | Build Targets | ||
| 244 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 245 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 246 | --> | ||
| 247 | |||
| 248 | <!-- | ||
| 249 | ================================================================================================== | ||
| 250 | CoreBuild - OVERRIDE DependsOn | ||
| 251 | |||
| 252 | The core build step calls each of the build targets. | ||
| 253 | |||
| 254 | This is where we insert our targets into the build process. | ||
| 255 | ================================================================================================== | ||
| 256 | --> | ||
| 257 | <PropertyGroup> | ||
| 258 | <CoreBuildDependsOn> | ||
| 259 | BuildOnlySettings; | ||
| 260 | PrepareForBuild; | ||
| 261 | PreBuildEvent; | ||
| 262 | |||
| 263 | WixBuild; | ||
| 264 | Signing; | ||
| 265 | |||
| 266 | GetTargetPath; | ||
| 267 | PrepareForRun; | ||
| 268 | IncrementalClean; | ||
| 269 | PostBuildEvent | ||
| 270 | </CoreBuildDependsOn> | ||
| 271 | </PropertyGroup> | ||
| 272 | |||
| 273 | |||
| 274 | <!-- | ||
| 275 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 276 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 277 | Resolve References Targets | ||
| 278 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 279 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 280 | --> | ||
| 281 | |||
| 282 | <!-- | ||
| 283 | ================================================================================================== | ||
| 284 | ResolveReferences - OVERRIDE DependsOn | ||
| 285 | |||
| 286 | ================================================================================================== | ||
| 287 | --> | ||
| 288 | <PropertyGroup> | ||
| 289 | <ResolveReferencesDependsOn> | ||
| 290 | BeforeResolveReferences; | ||
| 291 | AssignProjectConfiguration; | ||
| 292 | ResolveProjectReferences; | ||
| 293 | ResolveWixLibraryReferences; | ||
| 294 | ResolveWixExtensionReferences; | ||
| 295 | AfterResolveReferences | ||
| 296 | </ResolveReferencesDependsOn> | ||
| 297 | </PropertyGroup> | ||
| 298 | |||
| 299 | <!-- | ||
| 300 | ================================================================================================ | ||
| 301 | ResolveProjectReferences | ||
| 302 | |||
| 303 | Builds all of the referenced projects to get their outputs. | ||
| 304 | |||
| 305 | [IN] | ||
| 306 | @(NonVCProjectReference) - The list of non-VC project references. | ||
| 307 | |||
| 308 | [OUT] | ||
| 309 | @(ProjectReferenceWithConfiguration) - The list of non-VC project references. | ||
| 310 | @(WixLibProjects) - Paths to any .wixlibs that were built by referenced projects. | ||
| 311 | ================================================================================================ | ||
| 312 | --> | ||
| 313 | <Target | ||
| 314 | Name="ResolveProjectReferences" | ||
| 315 | DependsOnTargets="AssignProjectConfiguration;_SplitProjectReferencesByFileExistence" | ||
| 316 | Condition=" '@(ProjectReferenceWithConfiguration)' != '' "> | ||
| 317 | |||
| 318 | <!-- Issue a warning for each non-existent project. --> | ||
| 319 | <Warning | ||
| 320 | Text="The referenced project '%(_MSBuildProjectReferenceNonexistent.Identity)' does not exist." | ||
| 321 | Condition=" '@(_MSBuildProjectReferenceNonexistent)' != '' " /> | ||
| 322 | |||
| 323 | <!-- | ||
| 324 | When building this project from the IDE or when building a .sln from the command line or | ||
| 325 | when only building .wixlib project references, gather the referenced build outputs. The | ||
| 326 | code that builds the .sln will already have built the project, so there's no need to do | ||
| 327 | it again here and when building only .wixlib project references we'll use the results to | ||
| 328 | determine which projects to build. | ||
| 329 | |||
| 330 | The ContinueOnError setting is here so that, during project load, as much information as | ||
| 331 | possible will be passed to the compilers. | ||
| 332 | --> | ||
| 333 | <MSBuild | ||
| 334 | Projects="@(_MSBuildProjectReferenceExistent)" | ||
| 335 | Targets="%(_MSBuildProjectReferenceExistent.Targets);GetTargetPath" | ||
| 336 | Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration);%(_MSBuildProjectReferenceExistent.SetPlatform)" | ||
| 337 | Condition="('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true' or '$(BuildProjectReferences)' != 'true') and '@(_MSBuildProjectReferenceExistent)' != '' " | ||
| 338 | ContinueOnError="!$(BuildingProject)"> | ||
| 339 | |||
| 340 | <Output TaskParameter="TargetOutputs" ItemName="_GatheredProjectReferencePaths" /> | ||
| 341 | </MSBuild> | ||
| 342 | |||
| 343 | <!-- | ||
| 344 | Determine which project references should be built. Note: we will not build any project references | ||
| 345 | if building in the IDE because it builds project references directly. | ||
| 346 | |||
| 347 | If BuildProjectReferences is 'true' (the default) then take all MSBuild project references that exist | ||
| 348 | on disk and add them to the list of things to build. This is the easy case. | ||
| 349 | --> | ||
| 350 | <CreateItem | ||
| 351 | Include="@(_MSBuildProjectReferenceExistent)" | ||
| 352 | Condition=" '$(BuildProjectReferences)' == 'true' and '$(BuildingInsideVisualStudio)' != 'true' "> | ||
| 353 | |||
| 354 | <Output TaskParameter="Include" ItemName="_ProjectReferencesToBuild" /> | ||
| 355 | </CreateItem> | ||
| 356 | |||
| 357 | <!-- | ||
| 358 | If BuildProjectReferences is 'wixlib' then build only the MSBuild project references that exist and | ||
| 359 | create a .wixlib file. That requires us to first filter the gathered project references down to only | ||
| 360 | those that build .wixlibs. | ||
| 361 | --> | ||
| 362 | <CreateItem | ||
| 363 | Include="@(_GatheredProjectReferencePaths)" | ||
| 364 | Condition=" '$(BuildProjectReferences)' == 'wixlib' and '%(Extension)' == '.wixlib' and '$(BuildingInsideVisualStudio)' != 'true' "> | ||
| 365 | |||
| 366 | <Output TaskParameter="Include" ItemName="_ReferencedWixLibPaths" /> | ||
| 367 | </CreateItem> | ||
| 368 | |||
| 369 | <!-- | ||
| 370 | The second step when building only 'wixlib' project references is to create the list of existing MSBuild | ||
| 371 | project references that do *not* build a .wixlib. These are the projects that will be skipped. | ||
| 372 | --> | ||
| 373 | <CreateItem | ||
| 374 | Include="@(_MSBuildProjectReferenceExistent->'%(FullPath)')" | ||
| 375 | Exclude="@(_ReferencedWixLibPaths->'%(MSBuildSourceProjectFile)')" | ||
| 376 | Condition=" '$(BuildProjectReferences)' == 'wixlib' and '$(BuildingInsideVisualStudio)' != 'true' "> | ||
| 377 | |||
| 378 | <Output TaskParameter="Include" ItemName="_ProjectReferencesToSkip" /> | ||
| 379 | </CreateItem> | ||
| 380 | |||
| 381 | <!-- | ||
| 382 | Finally, when building only 'wixlib' project references, the list of projects to build are naturally the | ||
| 383 | list of projects *not* being skipped. | ||
| 384 | --> | ||
| 385 | <CreateItem | ||
| 386 | Include="@(_MSBuildProjectReferenceExistent->'%(FullPath)')" | ||
| 387 | Exclude="@(_ProjectReferencesToSkip)" | ||
| 388 | Condition=" '$(BuildProjectReferences)' == 'wixlib' and '$(BuildingInsideVisualStudio)' != 'true' "> | ||
| 389 | |||
| 390 | <Output TaskParameter="Include" ItemName="_ProjectReferencesToBuild" /> | ||
| 391 | </CreateItem> | ||
| 392 | |||
| 393 | <!-- Display a warning for all projects being skipped. --> | ||
| 394 | <Warning | ||
| 395 | Text="BuildProjectReferences set to '$(BuildProjectReferences)'. Skipping the non-Library project: %(_ProjectReferencesToSkip.Identity)" | ||
| 396 | Condition=" '@(_ProjectReferencesToSkip)' != '' " /> | ||
| 397 | |||
| 398 | <Message | ||
| 399 | Importance="low" | ||
| 400 | Text="Project reference to build: %(_ProjectReferencesToBuild.Identity), properties: %(_ProjectReferencesToBuild.Properties)" | ||
| 401 | Condition=" '@(_ProjectReferencesToBuild)' != '' " /> | ||
| 402 | |||
| 403 | <!-- | ||
| 404 | Build referenced projects when building from the command line. | ||
| 405 | |||
| 406 | The $(ProjectReferenceBuildTargets) will normally be blank so that the project's default target | ||
| 407 | is used during a P2P reference. However if a custom build process requires that the referenced | ||
| 408 | project has a different target to build it can be specified. | ||
| 409 | --> | ||
| 410 | <MSBuild | ||
| 411 | Projects="@(_ProjectReferencesToBuild)" | ||
| 412 | Targets="$(ProjectReferenceBuildTargets)" | ||
| 413 | Properties="%(_ProjectReferencesToBuild.SetConfiguration);%(_ProjectReferencesToBuild.SetPlatform)" | ||
| 414 | Condition=" '@(_ProjectReferencesToBuild)' != '' "> | ||
| 415 | |||
| 416 | <Output TaskParameter="TargetOutputs" ItemName="_BuiltProjectReferencePaths" /> | ||
| 417 | </MSBuild> | ||
| 418 | |||
| 419 | <!-- | ||
| 420 | VC project references must build GetNativeTargetPath because neither GetTargetPath nor the return of the default build | ||
| 421 | target return the output for a native .vcxproj. | ||
| 422 | --> | ||
| 423 | <MSBuild | ||
| 424 | Projects="@(_MSBuildProjectReferenceExistent)" | ||
| 425 | Targets="GetNativeTargetPath" | ||
| 426 | Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration);%(_MSBuildProjectReferenceExistent.SetPlatform)" | ||
| 427 | Condition=" '@(ProjectReferenceWithConfiguration)' != '' and '%(_MSBuildProjectReferenceExistent.Extension)' == '.vcxproj' "> | ||
| 428 | |||
| 429 | <Output TaskParameter="TargetOutputs" ItemName="_ResolvedProjectReferencePaths" /> | ||
| 430 | <Output TaskParameter="TargetOutputs" ItemName="_MSBuildResolvedProjectReferencePaths" /> | ||
| 431 | </MSBuild> | ||
| 432 | |||
| 433 | <!-- Assign the unique gathered and built project references to the resolved project | ||
| 434 | reference paths. --> | ||
| 435 | <RemoveDuplicates Inputs="@(_GatheredProjectReferencePaths);@(_BuiltProjectReferencePaths)"> | ||
| 436 | <Output TaskParameter="Filtered" ItemName="_ResolvedProjectReferencePaths" /> | ||
| 437 | <Output TaskParameter="Filtered" ItemName="_MSBuildResolvedProjectReferencePaths" /> | ||
| 438 | </RemoveDuplicates> | ||
| 439 | |||
| 440 | <!-- Create list of all .wixlib project references. --> | ||
| 441 | <CreateItem | ||
| 442 | Include="@(_ResolvedProjectReferencePaths)" | ||
| 443 | Condition=" '%(Extension)' == '.wixlib' "> | ||
| 444 | |||
| 445 | <Output TaskParameter="Include" ItemName="WixLibProjects" /> | ||
| 446 | </CreateItem> | ||
| 447 | |||
| 448 | <Message | ||
| 449 | Importance="low" | ||
| 450 | Text="Library from referenced projects: %(WixLibProjects.Identity)" | ||
| 451 | Condition=" '@(WixLibProjects)' != '' " /> | ||
| 452 | |||
| 453 | </Target> | ||
| 454 | |||
| 455 | <!-- | ||
| 456 | ================================================================================================ | ||
| 457 | ResolveWixLibraryReferences | ||
| 458 | |||
| 459 | Resolve the library references to full paths. | ||
| 460 | |||
| 461 | [IN] | ||
| 462 | @(WixLibrary) - The list of .wixlib files. | ||
| 463 | |||
| 464 | [OUT] | ||
| 465 | @(_ResolvedWixLibraryPaths) - Item group with full paths to libraries | ||
| 466 | ================================================================================================ | ||
| 467 | --> | ||
| 468 | <PropertyGroup> | ||
| 469 | <ResolveWixLibraryReferencesDependsOn></ResolveWixLibraryReferencesDependsOn> | ||
| 470 | </PropertyGroup> | ||
| 471 | <Target | ||
| 472 | Name="ResolveWixLibraryReferences" | ||
| 473 | DependsOnTargets="$(ResolveWixLibraryReferencesDependsOn)" | ||
| 474 | Condition=" '@(WixLibrary)' != ''"> | ||
| 475 | |||
| 476 | <!-- | ||
| 477 | The WixLibrarySearchPaths property is set to find assemblies in the following order: | ||
| 478 | |||
| 479 | (1) $(ReferencePaths) - the reference paths property, which comes from the .USER file. | ||
| 480 | (2) The hintpath from the referenced item itself, indicated by {HintPathFromItem}. | ||
| 481 | (3) Treat the reference's Include as if it were a real file name. | ||
| 482 | (4) Path specified by the WixExtDir property. | ||
| 483 | --> | ||
| 484 | <CreateProperty Condition=" '$(WixLibrarySearchPaths)' == '' " Value=" | ||
| 485 | $(ReferencePaths); | ||
| 486 | {HintPathFromItem}; | ||
| 487 | {RawFileName}; | ||
| 488 | $(WixExtDir) | ||
| 489 | "> | ||
| 490 | <Output TaskParameter="Value" PropertyName="WixLibrarySearchPaths" /> | ||
| 491 | </CreateProperty> | ||
| 492 | |||
| 493 | <ResolveWixReferences | ||
| 494 | WixReferences="@(WixLibrary)" | ||
| 495 | SearchPaths="$(WixLibrarySearchPaths)" | ||
| 496 | SearchFilenameExtensions=".wixlib"> | ||
| 497 | <Output TaskParameter="ResolvedWixReferences" ItemName="_AllResolvedWixLibraryPaths" /> | ||
| 498 | </ResolveWixReferences> | ||
| 499 | |||
| 500 | <!-- Remove duplicate library items that would cause build errors --> | ||
| 501 | <RemoveDuplicates Inputs="@(_AllResolvedWixLibraryPaths)"> | ||
| 502 | <Output TaskParameter="Filtered" ItemName="_ResolvedWixLibraryPaths" /> | ||
| 503 | </RemoveDuplicates> | ||
| 504 | |||
| 505 | </Target> | ||
| 506 | |||
| 507 | <!-- | ||
| 508 | ================================================================================================== | ||
| 509 | ResolveWixExtensionReferences | ||
| 510 | |||
| 511 | Resolves WiX extension references to full paths. Any properties you use | ||
| 512 | to resolve paths to extensions must be defined before importing this | ||
| 513 | file or the extensions will be automatically resolved to $(WixExtDir). | ||
| 514 | |||
| 515 | [IN] | ||
| 516 | @(WixExtension) - WixExtension item group | ||
| 517 | |||
| 518 | [OUT] | ||
| 519 | @(_ResolvedWixExtensionPaths) - Item group with full paths to extensions | ||
| 520 | ================================================================================================== | ||
| 521 | --> | ||
| 522 | <PropertyGroup> | ||
| 523 | <ResolveWixExtensionReferencesDependsOn></ResolveWixExtensionReferencesDependsOn> | ||
| 524 | </PropertyGroup> | ||
| 525 | <Target | ||
| 526 | Name="ResolveWixExtensionReferences" | ||
| 527 | DependsOnTargets="$(ResolveWixExtensionReferencesDependsOn)" | ||
| 528 | Condition=" '@(WixExtension)' != ''"> | ||
| 529 | |||
| 530 | <!-- | ||
| 531 | The WixExtensionSearchPaths property is set to find assemblies in the following order: | ||
| 532 | |||
| 533 | (1) $(ReferencePaths) - the reference paths property, which comes from the .USER file. | ||
| 534 | (2) The hintpath from the referenced item itself, indicated by {HintPathFromItem}. | ||
| 535 | (3) Treat the reference's Include as if it were a real file name. | ||
| 536 | (4) Path specified by the WixExtDir property. | ||
| 537 | --> | ||
| 538 | <CreateProperty Condition=" '$(WixExtensionSearchPaths)' == '' " Value=" | ||
| 539 | $(ReferencePaths); | ||
| 540 | {HintPathFromItem}; | ||
| 541 | {RawFileName}; | ||
| 542 | $(WixExtDir) | ||
| 543 | "> | ||
| 544 | <Output TaskParameter="Value" PropertyName="WixExtensionSearchPaths" /> | ||
| 545 | </CreateProperty> | ||
| 546 | |||
| 547 | <ResolveWixReferences | ||
| 548 | WixReferences="@(WixExtension)" | ||
| 549 | SearchPaths="$(WixExtensionSearchPaths)" | ||
| 550 | SearchFilenameExtensions=".dll"> | ||
| 551 | <Output TaskParameter="ResolvedWixReferences" ItemName="_AllResolvedWixExtensionPaths" /> | ||
| 552 | </ResolveWixReferences> | ||
| 553 | |||
| 554 | <!-- Remove duplicate extension items that would cause build errors --> | ||
| 555 | <RemoveDuplicates Inputs="@(_AllResolvedWixExtensionPaths)"> | ||
| 556 | <Output TaskParameter="Filtered" ItemName="_ResolvedWixExtensionPaths" /> | ||
| 557 | </RemoveDuplicates> | ||
| 558 | </Target> | ||
| 559 | |||
| 560 | <!-- | ||
| 561 | ================================================================================================ | ||
| 562 | GetTargetPath - OVERRIDE DependsOn | ||
| 563 | |||
| 564 | This stand-alone target returns the name of the build product (i.e. MSI, MSM) that would be | ||
| 565 | produced if we built this project. | ||
| 566 | ================================================================================================ | ||
| 567 | --> | ||
| 568 | <PropertyGroup> | ||
| 569 | <GetTargetPathDependsOn>AssignTargetPaths</GetTargetPathDependsOn> | ||
| 570 | </PropertyGroup> | ||
| 571 | |||
| 572 | |||
| 573 | <!-- | ||
| 574 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 575 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 576 | WixBuild Targets | ||
| 577 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 578 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 579 | --> | ||
| 580 | |||
| 581 | <!-- | ||
| 582 | ================================================================================================== | ||
| 583 | WixBuild | ||
| 584 | ================================================================================================== | ||
| 585 | --> | ||
| 586 | <PropertyGroup> | ||
| 587 | <WixBuildDependsOn> | ||
| 588 | ResolveReferences; | ||
| 589 | BeforeCompile; | ||
| 590 | _TimeStampBeforeCompile; | ||
| 591 | |||
| 592 | CalculateDefineConstants; | ||
| 593 | Harvest; | ||
| 594 | |||
| 595 | GenerateCompileWithObjectPath; | ||
| 596 | |||
| 597 | AssignTargetPaths; | ||
| 598 | ReadPreviousBindInputsAndBuiltOutputs; | ||
| 599 | |||
| 600 | CoreWixBuild; | ||
| 601 | |||
| 602 | UpdateLinkFileWrites; | ||
| 603 | _TimeStampAfterCompile; | ||
| 604 | AfterCompile | ||
| 605 | </WixBuildDependsOn> | ||
| 606 | </PropertyGroup> | ||
| 607 | <Target | ||
| 608 | Name="WixBuild" | ||
| 609 | DependsOnTargets="$(WixBuildDependsOn)" /> | ||
| 610 | |||
| 611 | <Target | ||
| 612 | Name="CoreWixBuild" | ||
| 613 | Inputs="@(Compile); | ||
| 614 | @(Content); | ||
| 615 | @(EmbeddedResource); | ||
| 616 | @(WixObject); | ||
| 617 | @(_ResolvedProjectReferencePaths); | ||
| 618 | @(_ResolvedWixLibraryPaths); | ||
| 619 | @(_ResolvedWixExtensionPaths); | ||
| 620 | @(_BindInputs); | ||
| 621 | $(MSBuildAllProjects)" | ||
| 622 | Outputs="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile);@(_BindBuiltOutputs)" | ||
| 623 | Condition=" '@(Compile)' != '' "> | ||
| 624 | |||
| 625 | <PropertyGroup> | ||
| 626 | <!--<OutputFile>$([System.IO.Path]::GetFullPath($(TargetDir)%(CultureGroup.OutputFolder)$(TargetFileName)))</OutputFile>--> | ||
| 627 | <OutputFile>$([System.IO.Path]::GetFullPath($(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)))</OutputFile> | ||
| 628 | <!--<OutputFile>$([System.IO.Path]::GetFullPath($(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetName)$(TargetExt)))</OutputFile>--> | ||
| 629 | <PdbOutputFile>$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)</PdbOutputFile> | ||
| 630 | </PropertyGroup> | ||
| 631 | |||
| 632 | <WixBuild | ||
| 633 | SourceFiles="@(_CompileWithObjectPath)" | ||
| 634 | LibraryFiles="@(WixLibProjects);@(_ResolvedWixLibraryPaths)" | ||
| 635 | LocalizationFiles="@(EmbeddedResource)" | ||
| 636 | |||
| 637 | Cultures="%(CultureGroup.Identity)" | ||
| 638 | |||
| 639 | ExtensionDirectory="$(WixExtDir)" | ||
| 640 | Extensions="@(_ResolvedWixExtensionPaths)" | ||
| 641 | |||
| 642 | IntermediateDirectory="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)" | ||
| 643 | |||
| 644 | OutputFile="$(OutputFile)" | ||
| 645 | OutputType="$(OutputType)" | ||
| 646 | PdbFile="$(PdbOutputFile)" | ||
| 647 | PdbType="$(WixPdbType)" | ||
| 648 | |||
| 649 | AdditionalOptions="$(CompilerAdditionalOptions) $(LinkerAdditionalOptions)" | ||
| 650 | DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)" | ||
| 651 | IncludeSearchPaths="$(IncludeSearchPaths)" | ||
| 652 | InstallerPlatform="$(InstallerPlatform)" | ||
| 653 | NoLogo="true" | ||
| 654 | Pedantic="$(Pedantic)" | ||
| 655 | ReferencePaths="$(ReferencePaths)" | ||
| 656 | |||
| 657 | SuppressSpecificWarnings="$(CompilerSuppressSpecificWarnings);$(LinkerSuppressSpecificWarnings)" | ||
| 658 | TreatSpecificWarningsAsErrors="$(CompilerTreatSpecificWarningsAsErrors)" | ||
| 659 | |||
| 660 | BindInputPaths="@(LinkerBindInputPaths)" | ||
| 661 | BindFiles="$(LinkerBindFiles)" | ||
| 662 | BindContentsFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)" | ||
| 663 | BindOutputsFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)" | ||
| 664 | BindBuiltOutputsFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)" | ||
| 665 | |||
| 666 | CabinetCachePath="$(CabinetCachePath)" | ||
| 667 | CabinetCreationThreadCount="$(CabinetCreationThreadCount)" | ||
| 668 | DefaultCompressionLevel="$(DefaultCompressionLevel)" | ||
| 669 | |||
| 670 | UnreferencedSymbolsFile="$(UnreferencedSymbolsFile)" | ||
| 671 | WixProjectFile="$(ProjectPath)" | ||
| 672 | WixVariables="$(WixVariables)" | ||
| 673 | |||
| 674 | SuppressValidation="$(SuppressValidation)" | ||
| 675 | SuppressIces="$(SuppressIces)" | ||
| 676 | AdditionalCub="$(AdditionalCub)" /> | ||
| 677 | |||
| 678 | <!-- | ||
| 679 | SuppressAllWarnings="$(CompilerSuppressAllWarnings);$(LinkerSuppressAllWarnings)" | ||
| 680 | TreatWarningsAsErrors="$(CompilerTreatWarningsAsErrors);$(LinkerTreatWarningsAsErrors)" | ||
| 681 | VerboseOutput="$(CompilerVerboseOutput);$(LinkerVerboseOutput)" | ||
| 682 | --> | ||
| 683 | </Target> | ||
| 684 | |||
| 685 | |||
| 686 | <!-- | ||
| 687 | ================================================================================================== | ||
| 688 | CalculateDefineConstants | ||
| 689 | |||
| 690 | Adds project references to the constants passed into the compiler. | ||
| 691 | |||
| 692 | [IN] | ||
| 693 | @(_ResolvedProjectReferencePaths) - paths to projects' outputs | ||
| 694 | $(VSProjectConfigurations) - map of project names to configurations, provided by VS when building in the IDE | ||
| 695 | |||
| 696 | [OUT] | ||
| 697 | $(ProjectReferenceDefineConstants) - the list of referenced project variables to be passed into the compiler | ||
| 698 | ================================================================================================== | ||
| 699 | --> | ||
| 700 | <PropertyGroup> | ||
| 701 | <CalculateDefineConstantsDependsOn>ResolveReferences</CalculateDefineConstantsDependsOn> | ||
| 702 | </PropertyGroup> | ||
| 703 | <Target | ||
| 704 | Name="CalculateDefineConstants" | ||
| 705 | DependsOnTargets="$(CalculateDefineConstantsDependsOn)" | ||
| 706 | Condition=" '@(_ResolvedProjectReferencePaths)' != '' "> | ||
| 707 | |||
| 708 | <PropertyGroup> | ||
| 709 | <ProjectDefineConstants> | ||
| 710 | Configuration=$(ConfigurationName); | ||
| 711 | OutDir=$(OutDir); | ||
| 712 | Platform=$(PlatformName); | ||
| 713 | ProjectDir=$(ProjectDir); | ||
| 714 | ProjectExt=$(ProjectExt); | ||
| 715 | ProjectFileName=$(ProjectFileName); | ||
| 716 | ProjectName=$(ProjectName); | ||
| 717 | ProjectPath=$(ProjectPath); | ||
| 718 | TargetDir=$(TargetDir); | ||
| 719 | TargetExt=$(TargetExt); | ||
| 720 | TargetFileName=$(TargetFileName); | ||
| 721 | TargetName=$(TargetName); | ||
| 722 | TargetPath=$(TargetPath); | ||
| 723 | </ProjectDefineConstants> | ||
| 724 | </PropertyGroup> | ||
| 725 | |||
| 726 | <PropertyGroup> | ||
| 727 | <SolutionDefineConstants Condition=" '$(DevEnvDir)'!='*Undefined*' ">$(SolutionDefineConstants);DevEnvDir=$(DevEnvDir)</SolutionDefineConstants> | ||
| 728 | <SolutionDefineConstants Condition=" '$(SolutionDir)'!='*Undefined*' ">$(SolutionDefineConstants);SolutionDir=$(SolutionDir)</SolutionDefineConstants> | ||
| 729 | <SolutionDefineConstants Condition=" '$(SolutionExt)'!='*Undefined*' ">$(SolutionDefineConstants);SolutionExt=$(SolutionExt)</SolutionDefineConstants> | ||
| 730 | <SolutionDefineConstants Condition=" '$(SolutionFileName)'!='*Undefined*' ">$(SolutionDefineConstants);SolutionFileName=$(SolutionFileName)</SolutionDefineConstants> | ||
| 731 | <SolutionDefineConstants Condition=" '$(SolutionName)'!='*Undefined*' ">$(SolutionDefineConstants);SolutionName=$(SolutionName)</SolutionDefineConstants> | ||
| 732 | <SolutionDefineConstants Condition=" '$(SolutionPath)'!='*Undefined*' ">$(SolutionDefineConstants);SolutionPath=$(SolutionPath)</SolutionDefineConstants> | ||
| 733 | </PropertyGroup> | ||
| 734 | |||
| 735 | <CreateProjectReferenceDefineConstants | ||
| 736 | ProjectReferencePaths="@(_ResolvedProjectReferencePaths)" | ||
| 737 | ProjectConfigurations="$(VSProjectConfigurations)"> | ||
| 738 | |||
| 739 | <Output TaskParameter="DefineConstants" PropertyName="ProjectReferenceDefineConstants" /> | ||
| 740 | </CreateProjectReferenceDefineConstants> | ||
| 741 | |||
| 742 | <ItemGroup> | ||
| 743 | <LinkerBindInputPaths Include="%(_ResolvedProjectReferencePaths.RootDir)%(_ResolvedProjectReferencePaths.Directory)" /> | ||
| 744 | </ItemGroup> | ||
| 745 | </Target> | ||
| 746 | |||
| 747 | <!-- | ||
| 748 | ================================================================================================ | ||
| 749 | GenerateCompileWithObjectPath | ||
| 750 | |||
| 751 | Generates metadata on the for compile output objects. | ||
| 752 | |||
| 753 | ================================================================================================ | ||
| 754 | --> | ||
| 755 | <PropertyGroup> | ||
| 756 | <GenerateCompileWithObjectPathDependsOn></GenerateCompileWithObjectPathDependsOn> | ||
| 757 | </PropertyGroup> | ||
| 758 | <Target | ||
| 759 | Name="GenerateCompileWithObjectPath" | ||
| 760 | Condition=" '@(Compile)' != '' "> | ||
| 761 | |||
| 762 | <GenerateCompileWithObjectPath | ||
| 763 | Compile="@(Compile)" | ||
| 764 | IntermediateOutputPath="$(IntermediateOutputPath)"> | ||
| 765 | <Output TaskParameter="CompileWithObjectPath" ItemName="_CompileWithObjectPath" /> | ||
| 766 | </GenerateCompileWithObjectPath> | ||
| 767 | </Target> | ||
| 768 | |||
| 769 | <!-- | ||
| 770 | ================================================================================================ | ||
| 771 | AssignTargetPaths - OVERRIDE Target | ||
| 772 | |||
| 773 | Determines the final list of culture groups to build based on either the Cultures property or | ||
| 774 | those specified in .wxl files. | ||
| 775 | |||
| 776 | Culture groups specified in the Cultures property must be specified as a semi-colon | ||
| 777 | delimited list of groups, with comma-delimited cultures within a group. | ||
| 778 | For example: | ||
| 779 | <Cultures>en-US,en;en-GB,en</Cultures> | ||
| 780 | This will build 2 targets, outputing to en-US and en-GB sub-folders. Light will first look | ||
| 781 | for strings in the first culture (en-US or en-GB) then the second (en). | ||
| 782 | |||
| 783 | Cultures of .wxl files will be used when the Culture property is not set. The culture of a | ||
| 784 | .wxl file is determined by the Culture attribute in the WixLocalization element in the file | ||
| 785 | |||
| 786 | Sets the OutputFolder metadata on each culture group. In most cases this is the same as the | ||
| 787 | first culture in the culture group. When the Culture's property is unspecified and no .wxl | ||
| 788 | files are provided this is the same as the output directory. When the Culture's property | ||
| 789 | specifies a single culture group and no .wxl files are provided this is the same as the output | ||
| 790 | directory. | ||
| 791 | |||
| 792 | Updates the TargetPath and TargetPdbPath properties to be used in subsequent targets. | ||
| 793 | |||
| 794 | [IN] | ||
| 795 | @(EmbeddedResource) - The list of wxl files to use for localization. | ||
| 796 | $(Cultures) - The list of culture groups to build. | ||
| 797 | |||
| 798 | [OUT] | ||
| 799 | @(CultureGroup) - The list of culture group strings with OutputFolder metadata | ||
| 800 | $(TargetPath) - Property list of target link output MSIs/MSMs | ||
| 801 | $(TargetPdbPath) - Property list of target output pdbs | ||
| 802 | |||
| 803 | ================================================================================================ | ||
| 804 | --> | ||
| 805 | <Target | ||
| 806 | Name="AssignTargetPaths" | ||
| 807 | Condition=" '$(OutputType)' == 'Package' or '$(OutputType)' == 'PatchCreation' or '$(OutputType)' == 'Module' "> | ||
| 808 | |||
| 809 | <WixAssignCulture Cultures="$(Cultures)" Files="@(EmbeddedResource)"> | ||
| 810 | <Output TaskParameter="CultureGroups" ItemName="CultureGroup" /> | ||
| 811 | </WixAssignCulture> | ||
| 812 | |||
| 813 | <!-- Expand the culture groups then put them back into the appropriate property --> | ||
| 814 | <ItemGroup> | ||
| 815 | <_CulturedTargetPath Include="$(TargetDir)%(CultureGroup.OutputFolder)$(TargetFileName)" /> | ||
| 816 | <_CulturedTargetPdbPath Include="$(TargetPdbDir)%(CultureGroup.OutputFolder)$(TargetPdbFileName)" /> | ||
| 817 | </ItemGroup> | ||
| 818 | |||
| 819 | <PropertyGroup> | ||
| 820 | <TargetPath>@(_CulturedTargetPath)</TargetPath> | ||
| 821 | <TargetPdbPath>@(_CulturedTargetPdbPath)</TargetPdbPath> | ||
| 822 | </PropertyGroup> | ||
| 823 | </Target> | ||
| 824 | |||
| 825 | <!-- | ||
| 826 | ================================================================================================ | ||
| 827 | ReadPreviousBindInputsAndBuiltOutputs | ||
| 828 | |||
| 829 | Reads a previous build's Bind contents and built outputs file into @(_BindInputs) and | ||
| 830 | @(_BindBuiltOutputs) respectively. | ||
| 831 | |||
| 832 | Note: Only the *built* outputs are used because using files copied to output folder | ||
| 833 | can cause perpetual incremental build. | ||
| 834 | |||
| 835 | Imagine the case where you have: Msi.wixproj -> Lib.wixproj -> Exe.csproj. The | ||
| 836 | Exe.csproj cannot be both an input to Lib.wixproj and an output of Msi.wixproj | ||
| 837 | (as an uncompressed file) because the Lib.wixproj will always newer than the | ||
| 838 | Exe.csproj. | ||
| 839 | |||
| 840 | [IN] | ||
| 841 | |||
| 842 | [OUT] | ||
| 843 | @(_BindInputs) - the content files required to bind (i.e. the Binary/@SourceFile and File/@Source files). | ||
| 844 | @(_BindBuiltOutputs) - the previously built .msi, .msm, .pcp, .exe .wixpdb, .cabs, etc. | ||
| 845 | Does not include content copied to output folder. | ||
| 846 | ================================================================================================ | ||
| 847 | --> | ||
| 848 | <Target | ||
| 849 | Name="ReadPreviousBindInputsAndBuiltOutputs"> | ||
| 850 | |||
| 851 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)"> | ||
| 852 | <Output TaskParameter="Lines" ItemName="_BindInputs" /> | ||
| 853 | </ReadLinesFromFile> | ||
| 854 | |||
| 855 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)"> | ||
| 856 | <Output TaskParameter="Lines" ItemName="_BindBuiltOutputs" /> | ||
| 857 | </ReadLinesFromFile> | ||
| 858 | |||
| 859 | <Message Importance="low" Text="Previous bind inputs: @(_BindInputs)" /> | ||
| 860 | <Message Importance="low" Text="Previous bind outputs: @(_BindBuiltOutputs)" /> | ||
| 861 | </Target> | ||
| 862 | |||
| 863 | <!-- | ||
| 864 | ================================================================================================ | ||
| 865 | UpdateLinkFileWrites | ||
| 866 | |||
| 867 | Reads the bind outputs file(s) output generated during WixBuild to correctly set the @(FileWrites) | ||
| 868 | item. Most targets have it easy because they can do a static mapping from inputs to the outputs. | ||
| 869 | However, the WixBuild target outputs are determined after a rather complex calculation we call | ||
| 870 | linking and binding! | ||
| 871 | |||
| 872 | This target runs independently after Link to ensure that @(FileWrites) is updated even if the | ||
| 873 | "WixBuild" task fails. | ||
| 874 | |||
| 875 | [IN] | ||
| 876 | Path to bind outputs file(s). | ||
| 877 | |||
| 878 | [OUT] | ||
| 879 | @(FileWrites) updated with outputs from bind. | ||
| 880 | ================================================================================================ | ||
| 881 | --> | ||
| 882 | <Target | ||
| 883 | Name="UpdateLinkFileWrites"> | ||
| 884 | |||
| 885 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)"> | ||
| 886 | <Output TaskParameter="Lines" ItemName="FileWrites"/> | ||
| 887 | </ReadLinesFromFile> | ||
| 888 | |||
| 889 | <ItemGroup> | ||
| 890 | <FileWrites Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)" Condition=" Exists('$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindContentsFile)') " /> | ||
| 891 | <FileWrites Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)" Condition=" Exists('$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindOutputsFile)') " /> | ||
| 892 | <FileWrites Include="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)" Condition=" Exists('$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)') " /> | ||
| 893 | </ItemGroup> | ||
| 894 | |||
| 895 | <Message Importance="low" Text="Build files after link: @(FileWrites)" /> | ||
| 896 | </Target> | ||
| 897 | |||
| 898 | <!-- | ||
| 899 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 900 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 901 | AllProjectOutputGroups Section | ||
| 902 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 903 | ////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| 904 | --> | ||
| 905 | |||
| 906 | <!-- | ||
| 907 | ================================================================================================== | ||
| 908 | AllProjectOutputGroups - OVERRIDE Target | ||
| 909 | |||
| 910 | ================================================================================================== | ||
| 911 | --> | ||
| 912 | <Target | ||
| 913 | Name="AllProjectOutputGroups" | ||
| 914 | DependsOnTargets=" | ||
| 915 | BuiltProjectOutputGroup; | ||
| 916 | DebugSymbolsProjectOutputGroup; | ||
| 917 | SourceFilesProjectOutputGroup; | ||
| 918 | ContentFilesProjectOutputGroup" /> | ||
| 919 | |||
| 920 | <!-- | ||
| 921 | This is the key output for the BuiltProjectOutputGroup and is meant to be read directly from the IDE. | ||
| 922 | Reading an item is faster than invoking a target. | ||
| 923 | --> | ||
| 924 | <ItemGroup> | ||
| 925 | <BuiltProjectOutputGroupKeyOutput Include="$(TargetPath)"> | ||
| 926 | <IsKeyOutput>true</IsKeyOutput> | ||
| 927 | <FinalOutputPath>$(TargetPath)</FinalOutputPath> | ||
| 928 | <TargetPath>$(TargetFileName)</TargetPath> | ||
| 929 | </BuiltProjectOutputGroupKeyOutput> | ||
| 930 | </ItemGroup> | ||
| 931 | |||
| 932 | <!-- | ||
| 933 | ================================================================================================== | ||
| 934 | BuiltProjectOutputGroup - OVERRIDE Target | ||
| 935 | ================================================================================================== | ||
| 936 | --> | ||
| 937 | <PropertyGroup> | ||
| 938 | <BuiltProjectOutputGroupDependsOn>PrepareForBuild;AssignTargetPaths</BuiltProjectOutputGroupDependsOn> | ||
| 939 | </PropertyGroup> | ||
| 940 | <Target | ||
| 941 | Name="BuiltProjectOutputGroup" | ||
| 942 | Outputs="@(BuiltProjectOutputGroupOutput)" | ||
| 943 | DependsOnTargets="$(BuiltProjectOutputGroupDependsOn)"> | ||
| 944 | |||
| 945 | <!-- Don't add BuiltProjectOutputGroupKeyOutput - to avoid duplicates, we only want to get the updated list of TargetPaths from the TargetPath property below --> | ||
| 946 | |||
| 947 | <!-- Try to read the outputs from the bind outputs text file since that's the output list straight from linker. --> | ||
| 948 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)"> | ||
| 949 | <Output TaskParameter="Lines" ItemName="_BuiltProjectOutputGroupOutputIntermediate"/> | ||
| 950 | </ReadLinesFromFile> | ||
| 951 | |||
| 952 | <!-- If we didn't get anything from the bind outputs text file, default to the target path. --> | ||
| 953 | <ItemGroup Condition=" '@(_BuiltProjectOutputGroupOutputIntermediate)'=='' "> | ||
| 954 | <_BuiltProjectOutputGroupOutputIntermediate Include="$(TargetPath)" /> | ||
| 955 | </ItemGroup> | ||
| 956 | |||
| 957 | <!-- Convert intermediate items into final items; this way we can get the full path for each item --> | ||
| 958 | <ItemGroup> | ||
| 959 | <BuiltProjectOutputGroupOutput Include="@(_BuiltProjectOutputGroupOutputIntermediate->'%(FullPath)')"> | ||
| 960 | <!-- For compatibility with 2.0 --> | ||
| 961 | <OriginalItemSpec Condition="'%(_BuiltProjectOutputGroupOutputIntermediate.OriginalItemSpec)' == ''">%(_BuiltProjectOutputGroupOutputIntermediate.FullPath)</OriginalItemSpec> | ||
| 962 | </BuiltProjectOutputGroupOutput> | ||
| 963 | </ItemGroup> | ||
| 964 | </Target> | ||
| 965 | |||
| 966 | <!-- | ||
| 967 | ================================================================================================== | ||
| 968 | DebugSymbolsProjectOutputGroup | ||
| 969 | |||
| 970 | Populates the Debug Symbols project output group. | ||
| 971 | ================================================================================================== | ||
| 972 | --> | ||
| 973 | <PropertyGroup> | ||
| 974 | <DebugSymbolsProjectOutputGroupDependsOn>AssignTargetPaths</DebugSymbolsProjectOutputGroupDependsOn> | ||
| 975 | </PropertyGroup> | ||
| 976 | <Target | ||
| 977 | Name="DebugSymbolsProjectOutputGroup" | ||
| 978 | Outputs="@(DebugSymbolsProjectOutputGroupOutput)" | ||
| 979 | DependsOnTargets="$(DebugSymbolsProjectOutputGroupDependsOn)"> | ||
| 980 | |||
| 981 | <!-- Include build output pdb(s). Different than predefined itemgroup since AssignTargetPaths target may change --> | ||
| 982 | <ItemGroup> | ||
| 983 | <DebugSymbolsProjectOutputGroupOutput Include="$(TargetPdbPath)" Condition=" '$(SuppressPdbOutput)' != 'true' "/> | ||
| 984 | </ItemGroup> | ||
| 985 | </Target> | ||
| 986 | |||
| 987 | |||
| 988 | <!-- | ||
| 989 | ================================================================================================== | ||
| 990 | CopyFilesToOutputDirectory - OVERRIDE Target | ||
| 991 | |||
| 992 | Copy all build outputs, satellites and other necessary files to the final directory. | ||
| 993 | ============================================================ | ||
| 994 | --> | ||
| 995 | <Target | ||
| 996 | Name="CopyFilesToOutputDirectory"> | ||
| 997 | |||
| 998 | <PropertyGroup> | ||
| 999 | <!-- By default we're using hard links to copy to the output directory, disabling this could slow the build significantly --> | ||
| 1000 | <CreateHardLinksForCopyFilesToOutputDirectoryIfPossible Condition=" '$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)' == '' ">true</CreateHardLinksForCopyFilesToOutputDirectoryIfPossible> | ||
| 1001 | </PropertyGroup> | ||
| 1002 | |||
| 1003 | <PropertyGroup> | ||
| 1004 | <CopyBuildOutputToOutputDirectory Condition="'$(CopyBuildOutputToOutputDirectory)'==''">true</CopyBuildOutputToOutputDirectory> | ||
| 1005 | <CopyOutputSymbolsToOutputDirectory Condition="'$(CopyOutputSymbolsToOutputDirectory)'==''">true</CopyOutputSymbolsToOutputDirectory> | ||
| 1006 | <FullIntermediateOutputPath>$([System.IO.Path]::GetFullPath($(IntermediateOutputPath)))</FullIntermediateOutputPath> | ||
| 1007 | </PropertyGroup> | ||
| 1008 | |||
| 1009 | <!-- Copy the bound files. --> | ||
| 1010 | <ReadLinesFromFile File="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(BindBuiltOutputsFile)"> | ||
| 1011 | <Output TaskParameter="Lines" ItemName="_FullPathToCopy"/> | ||
| 1012 | </ReadLinesFromFile> | ||
| 1013 | |||
| 1014 | <ItemGroup> | ||
| 1015 | <_FullPathToCopy Include="$(OutputFile)" Condition=" '@(_FullPathToCopy)'=='' " /> | ||
| 1016 | <_RelativePath Include="$([MSBuild]::MakeRelative($(FullIntermediateOutputPath), %(_FullPathToCopy.Identity)))" /> | ||
| 1017 | </ItemGroup> | ||
| 1018 | |||
| 1019 | <Copy | ||
| 1020 | SourceFiles="@(_RelativePath->'$(IntermediateOutputPath)%(Identity)')" | ||
| 1021 | DestinationFiles="@(_RelativePath->'$(OutDir)%(Identity)')" | ||
| 1022 | SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" | ||
| 1023 | OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" | ||
| 1024 | Retries="$(CopyRetryCount)" | ||
| 1025 | RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" | ||
| 1026 | UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" | ||
| 1027 | Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)' != 'true'" | ||
| 1028 | > | ||
| 1029 | |||
| 1030 | <Output TaskParameter="DestinationFiles" ItemName="MainAssembly"/> | ||
| 1031 | <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/> | ||
| 1032 | |||
| 1033 | </Copy> | ||
| 1034 | |||
| 1035 | <Message Importance="High" Text="$(MSBuildProjectName) -> $(TargetPath)" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" /> | ||
| 1036 | <!--<Message Importance="High" Text="$(MSBuildProjectName) -> @(MainAssembly->'%(FullPath)')" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" />--> | ||
| 1037 | |||
| 1038 | <!-- Copy the debug information file (.pdb), if any | ||
| 1039 | <Copy | ||
| 1040 | SourceFiles="@(_DebugSymbolsIntermediatePath)" | ||
| 1041 | DestinationFiles="@(_DebugSymbolsOutputPath)" | ||
| 1042 | SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" | ||
| 1043 | OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)" | ||
| 1044 | Retries="$(CopyRetryCount)" | ||
| 1045 | RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" | ||
| 1046 | UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)" | ||
| 1047 | Condition="'$(_DebugSymbolsProduced)'=='true' and '$(SkipCopyingSymbolsToOutputDirectory)' != 'true' and '$(CopyOutputSymbolsToOutputDirectory)'=='true'"> | ||
| 1048 | |||
| 1049 | <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/> | ||
| 1050 | |||
| 1051 | </Copy> | ||
| 1052 | --> | ||
| 1053 | </Target> | ||
| 1054 | |||
| 1055 | |||
| 1056 | <Import Project="$(WixHarvestTargetsPath)" Condition=" '$(WixHarvestTargetsPath)' != '' and Exists('$(WixHarvestTargetsPath)')" /> | ||
| 1057 | <Import Project="$(WixSigningTargetsPath)" Condition=" '$(WixSigningTargetsPath)' != '' and Exists('$(WixSigningTargetsPath)')" /> | ||
| 1058 | <Import Project="$(LuxTargetsPath)" Condition=" '$(LuxTargetsPath)' != '' and Exists('$(LuxTargetsPath)')" /> | ||
| 1059 | |||
| 1060 | <!-- Extension point: Define CustomAfterWixTargets to a .targets file that you want to include after this file. --> | ||
| 1061 | <Import Project="$(CustomAfterWixTargets)" Condition=" '$(CustomAfterWixTargets)' != '' and Exists('$(CustomAfterWixTargets)')" /> | ||
| 1062 | |||
| 1063 | </Project> | ||
