| 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 | <!-- These properties can be overridden to support non-default installations. --> |
| 7 | <PropertyGroup> |
| 8 | <WixHeatBinDir Condition=" '$(WixHeatBinDir)' == '' and '$(MSBuildRuntimeType)' == 'Core' ">$(MSBuildThisFileDirectory)..\tools\net6.0\</WixHeatBinDir> |
| 9 | <WixHeatBinDir Condition=" '$(WixHeatBinDir)' == '' ">$(MSBuildThisFileDirectory)..\tools\net472\</WixHeatBinDir> |
| 10 | <WixHeatTasksPath Condition=" '$(WixHeatTasksPath)' == '' ">$(WixHeatBinDir)WixToolset.HeatTasks.dll</WixHeatTasksPath> |
| 11 | |
| 12 | <!-- |
| 13 | For backwards compatibility, the MSBuild tasks always default to the x86 heat.exe even though a x64 heat.exe is available. |
| 14 | For "dotnet.exe build" the Heat tasks calculate the command-line to start heat.dll in .NET Core. |
| 15 | --> |
| 16 | <HeatToolDir Condition=" '$(HeatToolDir)' == '' and '$(MSBuildRuntimeType)' != 'Core' ">$(MSBuildThisFileDirectory)..\tools\net472\x86\</HeatToolDir> |
| 17 | |
| 18 | <HeatExe Condition=" '$(HeatExe)' == '' ">$(MSBuildThisFileDirectory)..\tools\net472\x86\heat.exe</HeatExe> |
| 19 | <HeatExe64 Condition=" '$(HeatExe64)' == '' ">$(MSBuildThisFileDirectory)..\tools\net472\x64\heat.exe</HeatExe64> |
| 20 | </PropertyGroup> |
| 21 | |
| 22 | <!-- These tasks are extensions for harvesting WiX source code from other sources. --> |
| 23 | <UsingTask TaskName="HeatFile" AssemblyFile="$(WixHeatTasksPath)" /> |
| 24 | <UsingTask TaskName="HeatDirectory" AssemblyFile="$(WixHeatTasksPath)" /> |
| 25 | <UsingTask TaskName="HeatProject" AssemblyFile="$(WixHeatTasksPath)" /> |
| 26 | |
| 27 | <UsingTask TaskName="RefreshGeneratedFile" AssemblyFile="$(WixHeatTasksPath)"/> |
| 28 | <UsingTask TaskName="RefreshBundleGeneratedFile" AssemblyFile="$(WixHeatTasksPath)"/> |
| 29 | |
| 30 | <!-- Default Harvester properties--> |
| 31 | <PropertyGroup> |
| 32 | <HarvestNoLogo Condition=" '$(HarvestNoLogo)' == '' ">$(NoLogo)</HarvestNoLogo> |
| 33 | <HarvestSuppressAllWarnings Condition=" '$(HarvestSuppressAllWarnings)' == '' ">$(SuppressAllWarnings)</HarvestSuppressAllWarnings> |
| 34 | <HarvestSuppressSpecificWarnings Condition=" '$(HarvestSuppressSpecificWarnings)' == '' ">$(SuppressSpecificWarnings)</HarvestSuppressSpecificWarnings> |
| 35 | <HarvestTreatWarningsAsErrors Condition=" '$(HarvestTreatWarningsAsErrors)' == '' ">$(TreatWarningsAsErrors)</HarvestTreatWarningsAsErrors> |
| 36 | <HarvestTreatSpecificWarningsAsErrors Condition=" '$(HarvestTreatSpecificWarningsAsErrors)' == '' ">$(TreatSpecificWarningsAsErrors)</HarvestTreatSpecificWarningsAsErrors> |
| 37 | <HarvestVerboseOutput Condition=" '$(HarvestVerboseOutput)' == '' ">$(VerboseOutput)</HarvestVerboseOutput> |
| 38 | <HarvestAutogenerateGuids Condition=" '$(HarvestAutogenerateGuids)' == '' ">true</HarvestAutogenerateGuids> |
| 39 | <HarvestGenerateGuidsNow Condition=" '$(HarvestGenerateGuidsNow)' == '' ">false</HarvestGenerateGuidsNow> |
| 40 | <HarvestSuppressFragments Condition=" '$(HarvestSuppressFragments)' == '' ">true</HarvestSuppressFragments> |
| 41 | <HarvestSuppressUniqueIds Condition=" '$(HarvestSuppressUniqueIds)' == '' ">false</HarvestSuppressUniqueIds> |
| 42 | </PropertyGroup> |
| 43 | |
| 44 | <!-- Default HarvestProjects properties --> |
| 45 | <PropertyGroup> |
| 46 | <!-- Project harvesting is defaulted to off until it works more consistently. --> |
| 47 | <EnableProjectHarvesting Condition=" '$(EnableProjectHarvesting)'=='' ">false</EnableProjectHarvesting> |
| 48 | |
| 49 | <HarvestProjectsNoLogo Condition=" '$(HarvestProjectsNoLogo)' == '' ">$(HarvestNoLogo)</HarvestProjectsNoLogo> |
| 50 | <HarvestProjectsSuppressAllWarnings Condition=" '$(HarvestProjectsSuppressAllWarnings)' == '' ">$(HarvestSuppressAllWarnings)</HarvestProjectsSuppressAllWarnings> |
| 51 | <HarvestProjectsSuppressSpecificWarnings Condition=" '$(HarvestProjectsSuppressSpecificWarnings)' == '' ">$(HarvestSuppressSpecificWarnings)</HarvestProjectsSuppressSpecificWarnings> |
| 52 | <HarvestProjectsTreatWarningsAsErrors Condition=" '$(HarvestProjectsTreatWarningsAsErrors)' == '' ">$(HarvestTreatWarningsAsErrors)</HarvestProjectsTreatWarningsAsErrors> |
| 53 | <HarvestProjectsTreatSpecificWarningsAsErrors Condition=" '$(HarvestProjectsTreatSpecificWarningsAsErrors)' == '' ">$(HarvestTreatSpecificWarningsAsErrors)</HarvestProjectsTreatSpecificWarningsAsErrors> |
| 54 | <HarvestProjectsVerboseOutput Condition=" '$(HarvestProjectsVerboseOutput)' == '' ">$(HarvestVerboseOutput)</HarvestProjectsVerboseOutput> |
| 55 | <HarvestProjectsAutogenerateGuids Condition=" '$(HarvestProjectsAutogenerateGuids)' == '' ">$(HarvestAutogenerateGuids)</HarvestProjectsAutogenerateGuids> |
| 56 | <HarvestProjectsGenerateGuidsNow Condition=" '$(HarvestProjectsGenerateGuidsNow)' == '' ">$(HarvestGenerateGuidsNow)</HarvestProjectsGenerateGuidsNow> |
| 57 | <HarvestProjectsSuppressFragments Condition=" '$(HarvestProjectsSuppressFragments)' == '' ">$(HarvestSuppressFragments)</HarvestProjectsSuppressFragments> |
| 58 | <HarvestProjectsSuppressUniqueIds Condition=" '$(HarvestProjectsSuppressUniqueIds)' == '' ">$(HarvestSuppressUniqueIds)</HarvestProjectsSuppressUniqueIds> |
| 59 | <HarvestProjectsTransforms Condition=" '$(HarvestProjectsTransforms)' == '' ">$(HarvestTransforms)</HarvestProjectsTransforms> |
| 60 | <HarvestProjectsGeneratedFile Condition=" '$(HarvestProjectsGeneratedFile)' == '' and '$(OutputType)' != 'Bundle' ">$(IntermediateOutputPath)Product.Generated.wxs</HarvestProjectsGeneratedFile> |
| 61 | <HarvestProjectsGeneratedFile Condition=" '$(HarvestProjectsGeneratedFile)' == '' and '$(OutputType)' == 'Bundle' ">$(IntermediateOutputPath)Bundle.Generated.wxs</HarvestProjectsGeneratedFile> |
| 62 | <HarvestProjectsMsbuildBinPath Condition=" '$(HarvestProjectsMsbuildBinPath)' == '' ">$(MSBuildBinPath)</HarvestProjectsMsbuildBinPath> |
| 63 | </PropertyGroup> |
| 64 | |
| 65 | <!-- Default HarvestDirectory properties --> |
| 66 | <PropertyGroup> |
| 67 | <HarvestDirectoryNoLogo Condition=" '$(HarvestDirectoryNoLogo)' == '' ">$(HarvestNoLogo)</HarvestDirectoryNoLogo> |
| 68 | <HarvestDirectorySuppressAllWarnings Condition=" '$(HarvestDirectorySuppressAllWarnings)' == '' ">$(HarvestSuppressAllWarnings)</HarvestDirectorySuppressAllWarnings> |
| 69 | <HarvestDirectorySuppressSpecificWarnings Condition=" '$(HarvestDirectorySuppressSpecificWarnings)' == '' ">$(HarvestSuppressSpecificWarnings)</HarvestDirectorySuppressSpecificWarnings> |
| 70 | <HarvestDirectoryTreatWarningsAsErrors Condition=" '$(HarvestDirectoryTreatWarningsAsErrors)' == '' ">$(HarvestTreatWarningsAsErrors)</HarvestDirectoryTreatWarningsAsErrors> |
| 71 | <HarvestDirectoryTreatSpecificWarningsAsErrors Condition=" '$(HarvestDirectoryTreatSpecificWarningsAsErrors)' == '' ">$(HarvestTreatSpecificWarningsAsErrors)</HarvestDirectoryTreatSpecificWarningsAsErrors> |
| 72 | <HarvestDirectoryVerboseOutput Condition=" '$(HarvestDirectoryVerboseOutput)' == '' ">$(HarvestVerboseOutput)</HarvestDirectoryVerboseOutput> |
| 73 | <HarvestDirectoryAutogenerateGuids Condition=" '$(HarvestDirectoryAutogenerateGuids)' == '' ">$(HarvestAutogenerateGuids)</HarvestDirectoryAutogenerateGuids> |
| 74 | <HarvestDirectoryGenerateGuidsNow Condition=" '$(HarvestDirectoryGenerateGuidsNow)' == '' ">$(HarvestGenerateGuidsNow)</HarvestDirectoryGenerateGuidsNow> |
| 75 | <HarvestDirectorySuppressFragments Condition=" '$(HarvestDirectorySuppressFragments)' == '' ">$(HarvestSuppressFragments)</HarvestDirectorySuppressFragments> |
| 76 | <HarvestDirectorySuppressUniqueIds Condition=" '$(HarvestDirectorySuppressUniqueIds)' == '' ">$(HarvestSuppressUniqueIds)</HarvestDirectorySuppressUniqueIds> |
| 77 | <HarvestDirectoryTransforms Condition=" '$(HarvestDirectoryTransforms)' == '' ">$(HarvestTransforms)</HarvestDirectoryTransforms> |
| 78 | </PropertyGroup> |
| 79 | |
| 80 | <!-- Default HarvestFile properties --> |
| 81 | <PropertyGroup> |
| 82 | <HarvestFileNoLogo Condition=" '$(HarvestFileNoLogo)' == '' ">$(HarvestNoLogo)</HarvestFileNoLogo> |
| 83 | <HarvestFileSuppressAllWarnings Condition=" '$(HarvestFileSuppressAllWarnings)' == '' ">$(HarvestSuppressAllWarnings)</HarvestFileSuppressAllWarnings> |
| 84 | <HarvestFileSuppressSpecificWarnings Condition=" '$(HarvestFileSuppressSpecificWarnings)' == '' ">$(HarvestSuppressSpecificWarnings)</HarvestFileSuppressSpecificWarnings> |
| 85 | <HarvestFileTreatWarningsAsErrors Condition=" '$(HarvestFileTreatWarningsAsErrors)' == '' ">$(HarvestTreatWarningsAsErrors)</HarvestFileTreatWarningsAsErrors> |
| 86 | <HarvestFileTreatSpecificWarningsAsErrors Condition=" '$(HarvestFileTreatSpecificWarningsAsErrors)' == '' ">$(HarvestTreatSpecificWarningsAsErrors)</HarvestFileTreatSpecificWarningsAsErrors> |
| 87 | <HarvestFileVerboseOutput Condition=" '$(HarvestFileVerboseOutput)' == '' ">$(HarvestVerboseOutput)</HarvestFileVerboseOutput> |
| 88 | <HarvestFileAutogenerateGuids Condition=" '$(HarvestFileAutogenerateGuids)' == '' ">$(HarvestAutogenerateGuids)</HarvestFileAutogenerateGuids> |
| 89 | <HarvestFileGenerateGuidsNow Condition=" '$(HarvestFileGenerateGuidsNow)' == '' ">$(HarvestGenerateGuidsNow)</HarvestFileGenerateGuidsNow> |
| 90 | <HarvestFileSuppressFragments Condition=" '$(HarvestFileSuppressFragments)' == '' ">$(HarvestSuppressFragments)</HarvestFileSuppressFragments> |
| 91 | <HarvestFileSuppressUniqueIds Condition=" '$(HarvestFileSuppressUniqueIds)' == '' ">$(HarvestSuppressUniqueIds)</HarvestFileSuppressUniqueIds> |
| 92 | <HarvestFileTransforms Condition=" '$(HarvestFileTransforms)' == '' ">$(HarvestTransforms)</HarvestFileTransforms> |
| 93 | </PropertyGroup> |
| 94 | |
| 95 | <!-- |
| 96 | ================================================================================================== |
| 97 | Harvest |
| 98 | ================================================================================================== |
| 99 | --> |
| 100 | <PropertyGroup> |
| 101 | <CoreCompileDependsOn> |
| 102 | $(CoreCompileDependsOn); |
| 103 | Harvest |
| 104 | </CoreCompileDependsOn> |
| 105 | <HarvestDependsOn> |
| 106 | ConvertReferences; |
| 107 | ConvertBundleReferences; |
| 108 | HarvestProjects; |
| 109 | HarvestDirectory; |
| 110 | HarvestFile; |
| 111 | GenerateCode; |
| 112 | </HarvestDependsOn> |
| 113 | </PropertyGroup> |
| 114 | <Target |
| 115 | Name="Harvest" |
| 116 | DependsOnTargets="$(HarvestDependsOn)" /> |
| 117 | |
| 118 | <!-- |
| 119 | ================================================================================================== |
| 120 | GenerateCode |
| 121 | ================================================================================================== |
| 122 | --> |
| 123 | <PropertyGroup> |
| 124 | <GenerateCodeDependsOn> |
| 125 | RefreshGeneratedFile; |
| 126 | RefreshBundleGeneratedFile |
| 127 | </GenerateCodeDependsOn> |
| 128 | </PropertyGroup> |
| 129 | <Target |
| 130 | Name="GenerateCode" |
| 131 | DependsOnTargets="$(GenerateCodeDependsOn)" /> |
| 132 | |
| 133 | <!-- |
| 134 | ================================================================================================ |
| 135 | ConvertReferences |
| 136 | |
| 137 | Converts project references to HeatProject items to auto generate authoring. |
| 138 | ================================================================================================ |
| 139 | --> |
| 140 | <Target |
| 141 | Name="ConvertReferences" |
| 142 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Package' or '$(OutputType)' == 'PatchCreation' or '$(OutputType)' == 'Module') "> |
| 143 | |
| 144 | <ItemGroup> |
| 145 | <_HeatProjectReference Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' "> |
| 146 | <DirectoryIds>%(_MSBuildProjectReferenceExistent.RefTargetDir)</DirectoryIds> |
| 147 | <ProjectOutputGroups>Binaries;Symbols;Sources;Content;Satellites;Documents</ProjectOutputGroups> |
| 148 | <ProjectName>%(_MSBuildProjectReferenceExistent.Name)</ProjectName> |
| 149 | <HeatOutput>$(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs</HeatOutput> |
| 150 | </_HeatProjectReference> |
| 151 | <HeatProject Include="@(_HeatProjectReference)" /> |
| 152 | </ItemGroup> |
| 153 | |
| 154 | <ItemGroup> |
| 155 | <!-- Unconditionally generate Compile items so they are always linked in. --> |
| 156 | <Compile Include="$(HarvestProjectsGeneratedFile)" /> |
| 157 | <_GeneratedFiles Include="$(HarvestProjectsGeneratedFile)" /> |
| 158 | </ItemGroup> |
| 159 | |
| 160 | </Target> |
| 161 | |
| 162 | <!-- |
| 163 | ================================================================================================ |
| 164 | ConvertBundleReferences |
| 165 | |
| 166 | Converts project references in Bundle projects to HeatProject items to auto generate authoring. |
| 167 | ================================================================================================ |
| 168 | --> |
| 169 | <Target |
| 170 | Name="ConvertBundleReferences" |
| 171 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Bundle') "> |
| 172 | |
| 173 | <ItemGroup> |
| 174 | <_HeatProjectReference Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' "> |
| 175 | <ProjectOutputGroups>Binaries;Symbols;Sources;Content;Satellites;Documents</ProjectOutputGroups> |
| 176 | <GenerateType>payloadgroup</GenerateType> |
| 177 | <HeatOutput>$(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs</HeatOutput> |
| 178 | </_HeatProjectReference> |
| 179 | <HeatProject Include="@(_HeatProjectReference)" /> |
| 180 | </ItemGroup> |
| 181 | |
| 182 | <ItemGroup> |
| 183 | <!-- Unconditionally generate Compile items so they are always linked in. --> |
| 184 | <Compile Include="$(HarvestProjectsGeneratedFile)" /> |
| 185 | <_GeneratedFiles Include="$(HarvestProjectsGeneratedFile)" /> |
| 186 | </ItemGroup> |
| 187 | |
| 188 | </Target> |
| 189 | |
| 190 | <!-- |
| 191 | ================================================================================================ |
| 192 | CombineHarvestProjects |
| 193 | |
| 194 | Combines HeatProject and HarvestProject items together and ensures each has HeatOutput metadata. |
| 195 | ================================================================================================ |
| 196 | --> |
| 197 | <Target |
| 198 | Name="CombineHarvestProjects" |
| 199 | Condition=" '@(HeatProject)' != '' or '@(HarvestProject)' != '' "> |
| 200 | |
| 201 | <!-- Add default HeatOutputs for those without one specified --> |
| 202 | <CreateItem Include="@(HeatProject)" Condition= " '%(HeatProject.HeatOutput)' == '' " |
| 203 | AdditionalMetadata="HeatOutput=$(IntermediateOutputPath)_%(HeatProject.Filename).wxs"> |
| 204 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> |
| 205 | </CreateItem> |
| 206 | <CreateItem Include="@(HarvestProject)" Condition= " '%(HarvestProject.HeatOutput)' == '' " |
| 207 | AdditionalMetadata="HeatOutput=$(IntermediateOutputPath)_%(HarvestProject.Filename).wxs"> |
| 208 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> |
| 209 | </CreateItem> |
| 210 | |
| 211 | |
| 212 | <CreateItem Include="@(HeatProject)" Condition= " '%(HeatProject.HeatOutput)' != '' "> |
| 213 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> |
| 214 | </CreateItem> |
| 215 | <CreateItem Include="@(HarvestProject)" Condition= " '%(HarvestProject.HeatOutput)' != '' "> |
| 216 | <Output TaskParameter="Include" ItemName="_AllHeatProjects" /> |
| 217 | </CreateItem> |
| 218 | |
| 219 | </Target> |
| 220 | |
| 221 | <!-- |
| 222 | ================================================================================================ |
| 223 | HarvestProjects |
| 224 | |
| 225 | Harvests outputs of other MSBuild projects files using the VS project extension to heat.exe. |
| 226 | |
| 227 | [IN] |
| 228 | @(HarvestProject) |
| 229 | @(HeatProject) |
| 230 | - The list of projects to harvest. HeatProject is provided for backward compatibility. |
| 231 | You should use HarvestProject instead. |
| 232 | |
| 233 | %(HarvestProject.Transforms) |
| 234 | %(HeatProject.Transforms) |
| 235 | - XSL transforms to apply to the harvested WiX. |
| 236 | |
| 237 | %(HarvestProject.ProjectOutputGroups) |
| 238 | %(HeatProjects.ProjectOutputGroups) |
| 239 | - The project output groups to harvest |
| 240 | |
| 241 | %(HarvestProject.AdditionalOptions) |
| 242 | %(HeatProjects.AdditionalOptions) |
| 243 | - Any additional harvesting command line options |
| 244 | |
| 245 | [OUT] |
| 246 | %(HeatOutput) |
| 247 | - The generated .wxs files which are added to the @(Compile) item list. |
| 248 | ================================================================================================ |
| 249 | --> |
| 250 | <ItemDefinitionGroup> |
| 251 | <HeatProject> |
| 252 | <Transforms>$(HarvestProjectsTransforms)</Transforms> |
| 253 | <ProjectOutputGroups>$(HarvestProjectsProjectOutputGroups)</ProjectOutputGroups> |
| 254 | <DirectoryIds>$(HarvestProjectsDirectoryIds)</DirectoryIds> |
| 255 | <AdditionalOptions>$(HarvestProjectsAdditionalOptions)</AdditionalOptions> |
| 256 | </HeatProject> |
| 257 | <HarvestProject> |
| 258 | <Transforms>$(HarvestProjectsTransforms)</Transforms> |
| 259 | <ProjectOutputGroups>$(HarvestProjectsProjectOutputGroups)</ProjectOutputGroups> |
| 260 | <DirectoryIds>$(HarvestProjectsDirectoryIds)</DirectoryIds> |
| 261 | <AdditionalOptions>$(HarvestProjectsAdditionalOptions)</AdditionalOptions> |
| 262 | </HarvestProject> |
| 263 | </ItemDefinitionGroup> |
| 264 | |
| 265 | <PropertyGroup> |
| 266 | <HarvestProjectsDependsOn>CombineHarvestProjects</HarvestProjectsDependsOn> |
| 267 | </PropertyGroup> |
| 268 | <Target Name="HarvestProjects" |
| 269 | DependsOnTargets="$(HarvestProjectsDependsOn)" |
| 270 | Inputs="@(_AllHeatProjects);%(_AllHeatProjects.Transforms);$(ProjectPath)" |
| 271 | Outputs="@(_AllHeatProjects -> '%(HeatOutput)')" |
| 272 | Condition=" $(EnableProjectHarvesting) and ('@(HeatProject)' != '' or '@(HarvestProject)' != '') "> |
| 273 | |
| 274 | <HeatProject |
| 275 | NoLogo="true" |
| 276 | SuppressAllWarnings="$(HarvestProjectsSuppressAllWarnings)" |
| 277 | SuppressSpecificWarnings="$(HarvestProjectsSuppressSpecificWarnings)" |
| 278 | TreatWarningsAsErrors="$(HarvestProjectsTreatWarningsAsErrors)" |
| 279 | TreatSpecificWarningsAsErrors="$(HarvestProjectsTreatSpecificWarningsAsErrors)" |
| 280 | VerboseOutput="$(HarvestProjectsVerboseOutput)" |
| 281 | AutogenerateGuids="$(HarvestProjectsAutogenerateGuids)" |
| 282 | GenerateGuidsNow="$(HarvestProjectsGenerateGuidsNow)" |
| 283 | OutputFile="%(_AllHeatProjects.HeatOutput)" |
| 284 | SuppressFragments="$(HarvestProjectsSuppressFragments)" |
| 285 | SuppressUniqueIds="$(HarvestProjectsSuppressUniqueIds)" |
| 286 | Transforms="%(_AllHeatProjects.Transforms)" |
| 287 | Project="%(_AllHeatProjects.FullPath)" |
| 288 | ProjectOutputGroups="%(_AllHeatProjects.ProjectOutputGroups)" |
| 289 | GenerateType="%(_AllHeatProjects.GenerateType)" |
| 290 | MsbuildBinPath="$(HarvestProjectsMsbuildBinPath)" |
| 291 | DirectoryIds="%(_AllHeatProjects.DirectoryIds)" |
| 292 | ProjectName="%(_AllHeatProjects.ProjectName)" |
| 293 | Configuration="%(_AllHeatProjects.Configuration)" |
| 294 | Platform="%(_AllHeatProjects.Platform)" |
| 295 | GenerateWixVariables="$(HarvestProjectsGenerateWixVariables)" |
| 296 | UseToolsVersion="$(HarvestProjectsUseToolsVersion)" |
| 297 | AdditionalOptions="%(_AllHeatProjects.AdditionalOptions)" |
| 298 | ToolPath="$(HeatToolDir)"> |
| 299 | |
| 300 | <Output TaskParameter="OutputFile" ItemName="Compile" /> |
| 301 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> |
| 302 | |
| 303 | </HeatProject> |
| 304 | |
| 305 | </Target> |
| 306 | |
| 307 | <!-- |
| 308 | ================================================================================================ |
| 309 | HarvestDirectory |
| 310 | |
| 311 | Harvests directories using heat.exe. |
| 312 | |
| 313 | [IN] |
| 314 | @(HarvestDirectory) - The list of directories to harvest. |
| 315 | %(HarvestDirectory.Transforms) - XSL transforms to apply to the harvested WiX. |
| 316 | %(HarvestDirectory.ComponentGroupName) - The name of the ComponentGroup to create. |
| 317 | %(HarvestDirectory.DirectoryRefId) - The ID of the directory to reference instead of TARGETDIR. |
| 318 | %(HarvestDirectory.KeepEmptyDirectories) - Whether to create Directory entries for empty directories. |
| 319 | %(HarvestDirectory.PreprocessorVariable) - Substitute SourceDir for another variable name (ex: var.Dir). |
| 320 | %(HarvestDirectory.SuppressCom) - Suppress COM elements. |
| 321 | %(HarvestDirectory.SuppressRootDirectory) - Suppress a Directory element for the root directory. |
| 322 | %(HarvestDirectory.SuppressRegistry) - Suppress registry harvesting. |
| 323 | %(HarvestDirectory.AdditionalOptions) - Any additional harvesting command line options. |
| 324 | |
| 325 | [OUT] |
| 326 | $(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs |
| 327 | - The generated .wxs files which are added to the @(Compile) item list. |
| 328 | ================================================================================================ |
| 329 | --> |
| 330 | |
| 331 | <ItemDefinitionGroup> |
| 332 | <HarvestDirectory> |
| 333 | <Transforms>$(HarvestDirectoryTransforms)</Transforms> |
| 334 | <ComponentGroupName>$(HarvestDirectoryComponentGroupName)</ComponentGroupName> |
| 335 | <DirectoryRefId>$(HarvestDirectoryDirectoryRefId)</DirectoryRefId> |
| 336 | <KeepEmptyDirectories>$(HarvestDirectoryKeepEmptyDirectories)</KeepEmptyDirectories> |
| 337 | <PreprocessorVariable>$(HarvestDirectoryPreprocessorVariable)</PreprocessorVariable> |
| 338 | <SuppressCom>$(HarvestDirectorySuppressCom)</SuppressCom> |
| 339 | <SuppressRootDirectory>$(HarvestDirectorySuppressRootDirectory)</SuppressRootDirectory> |
| 340 | <SuppressRegistry>$(HarvestDirectorySuppressRegistry)</SuppressRegistry> |
| 341 | <AdditionalOptions>$(HarvestDirectoryAdditionalOptions)</AdditionalOptions> |
| 342 | </HarvestDirectory> |
| 343 | </ItemDefinitionGroup> |
| 344 | |
| 345 | <PropertyGroup> |
| 346 | <HarvestDirectoryDependsOn> |
| 347 | GetHarvestDirectoryContent |
| 348 | </HarvestDirectoryDependsOn> |
| 349 | </PropertyGroup> |
| 350 | |
| 351 | <!-- Creates items to include content since wildcards will not work in Target/@Inputs. --> |
| 352 | <Target Name="GetHarvestDirectoryContent"> |
| 353 | <CreateItem Include="@(HarvestDirectory->'%(FullPath)\**\*')"> |
| 354 | <Output TaskParameter="Include" ItemName="_HarvestDirectoryContent" /> |
| 355 | </CreateItem> |
| 356 | </Target> |
| 357 | |
| 358 | <Target Name="HarvestDirectory" |
| 359 | DependsOnTargets="$(HarvestDirectoryDependsOn)" |
| 360 | Inputs="@(_HarvestDirectoryContent);%(HarvestDirectory.Transforms)" |
| 361 | Outputs="$(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs" |
| 362 | Condition=" '@(HarvestDirectory)' != '' "> |
| 363 | |
| 364 | <HeatDirectory |
| 365 | NoLogo="true" |
| 366 | SuppressAllWarnings="$(HarvestDirectorySuppressAllWarnings)" |
| 367 | SuppressSpecificWarnings="$(HarvestDirectorySuppressSpecificWarnings)" |
| 368 | TreatWarningsAsErrors="$(HarvestDirectoryTreatWarningsAsErrors)" |
| 369 | TreatSpecificWarningsAsErrors="$(HarvestDirectoryTreatSpecificWarningsAsErrors)" |
| 370 | VerboseOutput="$(HarvestDirectoryVerboseOutput)" |
| 371 | AutogenerateGuids="$(HarvestDirectoryAutogenerateGuids)" |
| 372 | GenerateGuidsNow="$(HarvestDirectoryGenerateGuidsNow)" |
| 373 | OutputFile="$(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs" |
| 374 | SuppressFragments="$(HarvestDirectorySuppressFragments)" |
| 375 | SuppressUniqueIds="$(HarvestDirectorySuppressUniqueIds)" |
| 376 | Transforms="%(HarvestDirectory.Transforms)" |
| 377 | Directory="@(HarvestDirectory)" |
| 378 | ComponentGroupName="%(HarvestDirectory.ComponentGroupName)" |
| 379 | DirectoryRefId="%(HarvestDirectory.DirectoryRefId)" |
| 380 | KeepEmptyDirectories="%(HarvestDirectory.KeepEmptyDirectories)" |
| 381 | PreprocessorVariable="%(HarvestDirectory.PreprocessorVariable)" |
| 382 | SuppressCom="%(HarvestDirectory.SuppressCom)" |
| 383 | SuppressRootDirectory="%(HarvestDirectory.SuppressRootDirectory)" |
| 384 | SuppressRegistry="%(HarvestDirectory.SuppressRegistry)" |
| 385 | AdditionalOptions="%(HarvestDirectory.AdditionalOptions)" |
| 386 | ToolPath="$(HeatToolDir)"> |
| 387 | |
| 388 | <Output TaskParameter="OutputFile" ItemName="Compile" /> |
| 389 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> |
| 390 | |
| 391 | </HeatDirectory> |
| 392 | |
| 393 | </Target> |
| 394 | |
| 395 | <!-- |
| 396 | ================================================================================================ |
| 397 | HarvestFile |
| 398 | |
| 399 | Harvests files of different types using heat.exe. This can harvest registry from |
| 400 | self-registering files, files with typelibs, and more. |
| 401 | |
| 402 | [IN] |
| 403 | @(HarvestFile) - The list of files to harvest. |
| 404 | %(HarvestFile.Transforms) - XSL transforms to apply to the harvested WiX. |
| 405 | %(HarvestFile.ComponentGroupName) - The name of the ComponentGroup to create. |
| 406 | %(HarvestFile.DirectoryRefId) - The ID of the directory to reference instead of TARGETDIR. |
| 407 | %(HarvestFile.PreprocessorVariable) - Substitute SourceDir for another variable name (ex: var.Dir). |
| 408 | %(HarvestFile.SuppressCom) - Suppress COM elements. |
| 409 | %(HarvestFile.SuppressRootDirectory) - Suppress a Directory element for the root directory. |
| 410 | $(HarvestFile.SuppressRegistry) - Suppress registry harvesting. |
| 411 | %(HarvestFile.AdditionalOptions) - Any additional harvesting command line options. |
| 412 | |
| 413 | [OUT] |
| 414 | $(IntermediateOutputPath)_%(HarvestFile.Filename)_file.wxs |
| 415 | - The generated .wxs files which are added to the @(Compile) item list. |
| 416 | ================================================================================================ |
| 417 | --> |
| 418 | |
| 419 | <ItemDefinitionGroup> |
| 420 | <HarvestFile> |
| 421 | <Transforms>$(HarvestFileTransforms)</Transforms> |
| 422 | <ComponentGroupName>$(HarvestFileComponentGroupName)</ComponentGroupName> |
| 423 | <DirectoryRefId>$(HarvestFileDirectoryRefId)</DirectoryRefId> |
| 424 | <PreprocessorVariable>$(HarvestFilePreprocessorVariable)</PreprocessorVariable> |
| 425 | <SuppressCom>$(HarvestFileSuppressCom)</SuppressCom> |
| 426 | <SuppressRegistry>$(HarvestFileSuppressRegistry)</SuppressRegistry> |
| 427 | <SuppressRootDirectory>$(HarvestFileSuppressRootDirectory)</SuppressRootDirectory> |
| 428 | <AdditionalOptions>$(HarvestFileAdditionalOptions)</AdditionalOptions> |
| 429 | </HarvestFile> |
| 430 | </ItemDefinitionGroup> |
| 431 | |
| 432 | <PropertyGroup> |
| 433 | <HarvestFileDependsOn></HarvestFileDependsOn> |
| 434 | </PropertyGroup> |
| 435 | <Target Name="HarvestFile" |
| 436 | DependsOnTargets="$(HarvestFileDependsOn)" |
| 437 | Inputs="@(HarvestFile);%(HarvestFile.Transforms)" |
| 438 | Outputs="@(HarvestFile->'$(IntermediateOutputPath)_%(ComponentGroupName)_%(DirectoryRefId)_%(Filename)%(Extension)_file.wxs')" |
| 439 | Condition=" '@(HarvestFile)' != '' "> |
| 440 | |
| 441 | <HeatFile |
| 442 | NoLogo="true" |
| 443 | SuppressAllWarnings="$(HarvestFileSuppressAllWarnings)" |
| 444 | SuppressSpecificWarnings="$(HarvestFileSuppressSpecificWarnings)" |
| 445 | TreatWarningsAsErrors="$(HarvestFileTreatWarningsAsErrors)" |
| 446 | TreatSpecificWarningsAsErrors="$(HarvestFileTreatSpecificWarningsAsErrors)" |
| 447 | VerboseOutput="$(HarvestFileVerboseOutput)" |
| 448 | AutogenerateGuids="$(HarvestFileAutogenerateGuids)" |
| 449 | GenerateGuidsNow="$(HarvestFileGenerateGuidsNow)" |
| 450 | OutputFile="$(IntermediateOutputPath)_%(HarvestFile.ComponentGroupName)_%(HarvestFile.DirectoryRefId)_%(HarvestFile.Filename)%(HarvestFile.Extension)_file.wxs" |
| 451 | SuppressFragments="$(HarvestFileSuppressFragments)" |
| 452 | SuppressUniqueIds="$(HarvestFileSuppressUniqueIds)" |
| 453 | Transforms="%(HarvestFile.Transforms)" |
| 454 | File="@(HarvestFile)" |
| 455 | ComponentGroupName="%(HarvestFile.ComponentGroupName)" |
| 456 | DirectoryRefId="%(HarvestFile.DirectoryRefId)" |
| 457 | PreprocessorVariable="%(HarvestFile.PreprocessorVariable)" |
| 458 | SuppressCom="%(HarvestFile.SuppressCom)" |
| 459 | SuppressRegistry="%(HarvestFile.SuppressRegistry)" |
| 460 | SuppressRootDirectory="%(HarvestFile.SuppressRootDirectory)" |
| 461 | AdditionalOptions="%(HarvestFile.AdditionalOptions)" |
| 462 | ToolPath="$(HeatToolDir)"> |
| 463 | |
| 464 | <Output TaskParameter="OutputFile" ItemName="Compile" /> |
| 465 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> |
| 466 | |
| 467 | </HeatFile> |
| 468 | |
| 469 | </Target> |
| 470 | |
| 471 | <!-- |
| 472 | ================================================================================================ |
| 473 | RefreshGeneratedFile |
| 474 | |
| 475 | Generates code based on metadata defined in project references. |
| 476 | |
| 477 | [IN] |
| 478 | @(_MSBuildResolvedProjectReferencePaths) - The list of MSBuildable project references. |
| 479 | |
| 480 | [OUT] |
| 481 | @(_GeneratedFiles) - The generated source file. |
| 482 | ================================================================================================ |
| 483 | --> |
| 484 | <PropertyGroup> |
| 485 | <RefreshGeneratedFileDependsOn></RefreshGeneratedFileDependsOn> |
| 486 | </PropertyGroup> |
| 487 | <Target Name="RefreshGeneratedFile" |
| 488 | DependsOnTargets="$(RefreshGeneratedFileDependsOn)" |
| 489 | Inputs="@(_MSBuildResolvedProjectReferencePaths);@(Compile);$(ProjectPath)" |
| 490 | Outputs="@(_GeneratedFiles)" |
| 491 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Package' or '$(OutputType)' == 'PatchCreation' or '$(OutputType)' == 'Module') and '@(_GeneratedFiles)' != '' "> |
| 492 | |
| 493 | <RefreshGeneratedFile |
| 494 | GeneratedFiles="@(_GeneratedFiles)" |
| 495 | ProjectReferencePaths="@(_MSBuildResolvedProjectReferencePaths)" /> |
| 496 | |
| 497 | </Target> |
| 498 | |
| 499 | <!-- |
| 500 | ================================================================================================ |
| 501 | RefreshBundleGeneratedFile |
| 502 | |
| 503 | Generates code for bundle projects based on metadata defined in project references. |
| 504 | |
| 505 | [IN] |
| 506 | @(_MSBuildResolvedProjectReferencePaths) - The list of MSBuildable project references. |
| 507 | |
| 508 | [OUT] |
| 509 | @(_GeneratedFiles) - The generated source file. |
| 510 | ================================================================================================ |
| 511 | --> |
| 512 | <PropertyGroup> |
| 513 | <RefreshBundleGeneratedFileDependsOn></RefreshBundleGeneratedFileDependsOn> |
| 514 | </PropertyGroup> |
| 515 | <Target Name="RefreshBundleGeneratedFile" |
| 516 | DependsOnTargets="$(RefreshBundleGeneratedFileDependsOn)" |
| 517 | Inputs="@(_MSBuildResolvedProjectReferencePaths);@(Compile);$(ProjectPath)" |
| 518 | Outputs="@(_GeneratedFiles)" |
| 519 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Bundle' and '@(_GeneratedFiles)' != '') "> |
| 520 | |
| 521 | <RefreshBundleGeneratedFile |
| 522 | GeneratedFiles="@(_GeneratedFiles)" |
| 523 | ProjectReferencePaths="@(_MSBuildResolvedProjectReferencePaths)" /> |
| 524 | </Target> |
| 525 | |
| 526 | </Project> |