diff options
author | Rob Mensching <rob@firegiant.com> | 2022-07-26 17:20:39 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-08-01 20:25:19 -0700 |
commit | a627ca9b720047e633a8fe72003ab9bee31006c5 (patch) | |
tree | 2bc8a924bb4141ab718e74d08f6459a0ffe8d573 /src/tools/WixToolset.Heat | |
parent | 521eb3c9cf38823a2c4019abb85dc0b3200b92cb (diff) | |
download | wix-a627ca9b720047e633a8fe72003ab9bee31006c5.tar.gz wix-a627ca9b720047e633a8fe72003ab9bee31006c5.tar.bz2 wix-a627ca9b720047e633a8fe72003ab9bee31006c5.zip |
Create WixToolset.Heat.nupkg to distribute heat.exe and Heat targets
Moves Heat functionality to the "tools" layer and packages it all
up in WixToolset.Heat.nupkg for distribution in WiX v4.
Completes 6838
Diffstat (limited to 'src/tools/WixToolset.Heat')
-rw-r--r-- | src/tools/WixToolset.Heat/WixToolset.Heat.csproj | 12 | ||||
-rw-r--r-- | src/tools/WixToolset.Heat/WixToolset.Heat.nuspec | 20 | ||||
-rw-r--r-- | src/tools/WixToolset.Heat/WixToolset.Heat.targets | 516 |
3 files changed, 548 insertions, 0 deletions
diff --git a/src/tools/WixToolset.Heat/WixToolset.Heat.csproj b/src/tools/WixToolset.Heat/WixToolset.Heat.csproj new file mode 100644 index 00000000..a3e0eb41 --- /dev/null +++ b/src/tools/WixToolset.Heat/WixToolset.Heat.csproj | |||
@@ -0,0 +1,12 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
3 | |||
4 | <Project Sdk="Microsoft.NET.Sdk"> | ||
5 | <PropertyGroup> | ||
6 | <TargetFrameworks>netcoreapp3.1</TargetFrameworks> | ||
7 | <Description>WiX Toolset Heat MSBuild integration</Description> | ||
8 | <PublishDir>$(PublishRoot)WixToolset.Heat\</PublishDir> | ||
9 | <NuspecFile>$(MSBuildThisFileName).nuspec</NuspecFile> | ||
10 | <NuspecBasePath>$(PublishDir)</NuspecBasePath> | ||
11 | </PropertyGroup> | ||
12 | </Project> | ||
diff --git a/src/tools/WixToolset.Heat/WixToolset.Heat.nuspec b/src/tools/WixToolset.Heat/WixToolset.Heat.nuspec new file mode 100644 index 00000000..5242773b --- /dev/null +++ b/src/tools/WixToolset.Heat/WixToolset.Heat.nuspec | |||
@@ -0,0 +1,20 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | ||
3 | <metadata> | ||
4 | <id>$id$</id> | ||
5 | <version>$version$</version> | ||
6 | <title>$title$</title> | ||
7 | <description>$description$</description> | ||
8 | <authors>$authors$</authors> | ||
9 | <license type="expression">MS-RL</license> | ||
10 | <requireLicenseAcceptance>false</requireLicenseAcceptance> | ||
11 | <copyright>$copyright$</copyright> | ||
12 | <projectUrl>$projectUrl$</projectUrl> | ||
13 | <repository type="$repositorytype$" url="$repositoryurl$" commit="$repositorycommit$" /> | ||
14 | </metadata> | ||
15 | |||
16 | <files> | ||
17 | <file src="$projectFolder$\$id$.targets" target="build" /> | ||
18 | <file src="tools\**\*" target="tools" /> | ||
19 | </files> | ||
20 | </package> | ||
diff --git a/src/tools/WixToolset.Heat/WixToolset.Heat.targets b/src/tools/WixToolset.Heat/WixToolset.Heat.targets new file mode 100644 index 00000000..ba854459 --- /dev/null +++ b/src/tools/WixToolset.Heat/WixToolset.Heat.targets | |||
@@ -0,0 +1,516 @@ | |||
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\netcoreapp3.1\</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 | [OUT] | ||
242 | %(HeatOutput) | ||
243 | - The generated .wxs files which are added to the @(Compile) item list. | ||
244 | ================================================================================================ | ||
245 | --> | ||
246 | <ItemDefinitionGroup> | ||
247 | <HeatProject> | ||
248 | <Transforms>$(HarvestProjectsTransforms)</Transforms> | ||
249 | <ProjectOutputGroups>$(HarvestProjectsProjectOutputGroups)</ProjectOutputGroups> | ||
250 | <DirectoryIds>$(HarvestProjectsDirectoryIds)</DirectoryIds> | ||
251 | </HeatProject> | ||
252 | <HarvestProject> | ||
253 | <Transforms>$(HarvestProjectsTransforms)</Transforms> | ||
254 | <ProjectOutputGroups>$(HarvestProjectsProjectOutputGroups)</ProjectOutputGroups> | ||
255 | <DirectoryIds>$(HarvestProjectsDirectoryIds)</DirectoryIds> | ||
256 | </HarvestProject> | ||
257 | </ItemDefinitionGroup> | ||
258 | |||
259 | <PropertyGroup> | ||
260 | <HarvestProjectsDependsOn>CombineHarvestProjects</HarvestProjectsDependsOn> | ||
261 | </PropertyGroup> | ||
262 | <Target Name="HarvestProjects" | ||
263 | DependsOnTargets="$(HarvestProjectsDependsOn)" | ||
264 | Inputs="@(_AllHeatProjects);%(_AllHeatProjects.Transforms);$(ProjectPath)" | ||
265 | Outputs="@(_AllHeatProjects -> '%(HeatOutput)')" | ||
266 | Condition=" $(EnableProjectHarvesting) and ('@(HeatProject)' != '' or '@(HarvestProject)' != '') "> | ||
267 | |||
268 | <HeatProject | ||
269 | NoLogo="true" | ||
270 | SuppressAllWarnings="$(HarvestProjectsSuppressAllWarnings)" | ||
271 | SuppressSpecificWarnings="$(HarvestProjectsSuppressSpecificWarnings)" | ||
272 | TreatWarningsAsErrors="$(HarvestProjectsTreatWarningsAsErrors)" | ||
273 | TreatSpecificWarningsAsErrors="$(HarvestProjectsTreatSpecificWarningsAsErrors)" | ||
274 | VerboseOutput="$(HarvestProjectsVerboseOutput)" | ||
275 | AutogenerateGuids="$(HarvestProjectsAutogenerateGuids)" | ||
276 | GenerateGuidsNow="$(HarvestProjectsGenerateGuidsNow)" | ||
277 | OutputFile="%(_AllHeatProjects.HeatOutput)" | ||
278 | SuppressFragments="$(HarvestProjectsSuppressFragments)" | ||
279 | SuppressUniqueIds="$(HarvestProjectsSuppressUniqueIds)" | ||
280 | Transforms="%(_AllHeatProjects.Transforms)" | ||
281 | Project="%(_AllHeatProjects.FullPath)" | ||
282 | ProjectOutputGroups="%(_AllHeatProjects.ProjectOutputGroups)" | ||
283 | GenerateType="%(_AllHeatProjects.GenerateType)" | ||
284 | MsbuildBinPath="$(HarvestProjectsMsbuildBinPath)" | ||
285 | DirectoryIds="%(_AllHeatProjects.DirectoryIds)" | ||
286 | ProjectName="%(_AllHeatProjects.ProjectName)" | ||
287 | Configuration="%(_AllHeatProjects.Configuration)" | ||
288 | Platform="%(_AllHeatProjects.Platform)" | ||
289 | GenerateWixVariables="$(HarvestProjectsGenerateWixVariables)" | ||
290 | UseToolsVersion="$(HarvestProjectsUseToolsVersion)" | ||
291 | AdditionalOptions="$(HarvestProjectsAdditionalOptions)" | ||
292 | ToolPath="$(HeatToolDir)"> | ||
293 | |||
294 | <Output TaskParameter="OutputFile" ItemName="Compile" /> | ||
295 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> | ||
296 | |||
297 | </HeatProject> | ||
298 | |||
299 | </Target> | ||
300 | |||
301 | <!-- | ||
302 | ================================================================================================ | ||
303 | HarvestDirectory | ||
304 | |||
305 | Harvests directories using heat.exe. | ||
306 | |||
307 | [IN] | ||
308 | @(HarvestDirectory) - The list of directories to harvest. | ||
309 | %(HarvestDirectory.Transforms) - XSL transforms to apply to the harvested WiX. | ||
310 | %(HarvestDirectory.ComponentGroupName) - The name of the ComponentGroup to create. | ||
311 | %(HarvestDirectory.DirectoryRefId) - The ID of the directory to reference instead of TARGETDIR. | ||
312 | %(HarvestDirectory.KeepEmptyDirectories) - Whether to create Directory entries for empty directories. | ||
313 | %(HarvestDirectory.PreprocessorVariable) - Substitute SourceDir for another variable name (ex: var.Dir). | ||
314 | %(HarvestDirectory.SuppressCom) - Suppress COM elements. | ||
315 | %(HarvestDirectory.SuppressRootDirectory) - Suppress a Directory element for the root directory. | ||
316 | $(HarvestDirectory.SuppressRegistry) - Suppress registry harvesting. | ||
317 | |||
318 | [OUT] | ||
319 | $(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs | ||
320 | - The generated .wxs files which are added to the @(Compile) item list. | ||
321 | ================================================================================================ | ||
322 | --> | ||
323 | |||
324 | <ItemDefinitionGroup> | ||
325 | <HarvestDirectory> | ||
326 | <Transforms>$(HarvestDirectoryTransforms)</Transforms> | ||
327 | <ComponentGroupName>$(HarvestDirectoryComponentGroupName)</ComponentGroupName> | ||
328 | <DirectoryRefId>$(HarvestDirectoryDirectoryRefId)</DirectoryRefId> | ||
329 | <KeepEmptyDirectories>$(HarvestDirectoryKeepEmptyDirectories)</KeepEmptyDirectories> | ||
330 | <PreprocessorVariable>$(HarvestDirectoryPreprocessorVariable)</PreprocessorVariable> | ||
331 | <SuppressCom>$(HarvestDirectorySuppressCom)</SuppressCom> | ||
332 | <SuppressRootDirectory>$(HarvestDirectorySuppressRootDirectory)</SuppressRootDirectory> | ||
333 | <SuppressRegistry>$(HarvestDirectorySuppressRegistry)</SuppressRegistry> | ||
334 | </HarvestDirectory> | ||
335 | </ItemDefinitionGroup> | ||
336 | |||
337 | <PropertyGroup> | ||
338 | <HarvestDirectoryDependsOn> | ||
339 | GetHarvestDirectoryContent | ||
340 | </HarvestDirectoryDependsOn> | ||
341 | </PropertyGroup> | ||
342 | |||
343 | <!-- Creates items to include content since wildcards will not work in Target/@Inputs. --> | ||
344 | <Target Name="GetHarvestDirectoryContent"> | ||
345 | <CreateItem Include="@(HarvestDirectory->'%(FullPath)\**\*')"> | ||
346 | <Output TaskParameter="Include" ItemName="_HarvestDirectoryContent" /> | ||
347 | </CreateItem> | ||
348 | </Target> | ||
349 | |||
350 | <Target Name="HarvestDirectory" | ||
351 | DependsOnTargets="$(HarvestDirectoryDependsOn)" | ||
352 | Inputs="@(_HarvestDirectoryContent);%(HarvestDirectory.Transforms)" | ||
353 | Outputs="$(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs" | ||
354 | Condition=" '@(HarvestDirectory)' != '' "> | ||
355 | |||
356 | <HeatDirectory | ||
357 | NoLogo="true" | ||
358 | SuppressAllWarnings="$(HarvestDirectorySuppressAllWarnings)" | ||
359 | SuppressSpecificWarnings="$(HarvestDirectorySuppressSpecificWarnings)" | ||
360 | TreatWarningsAsErrors="$(HarvestDirectoryTreatWarningsAsErrors)" | ||
361 | TreatSpecificWarningsAsErrors="$(HarvestDirectoryTreatSpecificWarningsAsErrors)" | ||
362 | VerboseOutput="$(HarvestDirectoryVerboseOutput)" | ||
363 | AutogenerateGuids="$(HarvestDirectoryAutogenerateGuids)" | ||
364 | GenerateGuidsNow="$(HarvestDirectoryGenerateGuidsNow)" | ||
365 | OutputFile="$(IntermediateOutputPath)_%(HarvestDirectory.ComponentGroupName)_dir.wxs" | ||
366 | SuppressFragments="$(HarvestDirectorySuppressFragments)" | ||
367 | SuppressUniqueIds="$(HarvestDirectorySuppressUniqueIds)" | ||
368 | Transforms="%(HarvestDirectory.Transforms)" | ||
369 | Directory="@(HarvestDirectory)" | ||
370 | ComponentGroupName="%(HarvestDirectory.ComponentGroupName)" | ||
371 | DirectoryRefId="%(HarvestDirectory.DirectoryRefId)" | ||
372 | KeepEmptyDirectories="%(HarvestDirectory.KeepEmptyDirectories)" | ||
373 | PreprocessorVariable="%(HarvestDirectory.PreprocessorVariable)" | ||
374 | SuppressCom="%(HarvestDirectory.SuppressCom)" | ||
375 | SuppressRootDirectory="%(HarvestDirectory.SuppressRootDirectory)" | ||
376 | SuppressRegistry="%(HarvestDirectory.SuppressRegistry)" | ||
377 | AdditionalOptions="$(HarvestDirectoryAdditionalOptions)" | ||
378 | ToolPath="$(HeatToolDir)"> | ||
379 | |||
380 | <Output TaskParameter="OutputFile" ItemName="Compile" /> | ||
381 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> | ||
382 | |||
383 | </HeatDirectory> | ||
384 | |||
385 | </Target> | ||
386 | |||
387 | <!-- | ||
388 | ================================================================================================ | ||
389 | HarvestFile | ||
390 | |||
391 | Harvests files of different types using heat.exe. This can harvest registry from | ||
392 | self-registering files, files with typelibs, and more. | ||
393 | |||
394 | [IN] | ||
395 | @(HarvestFile) - The list of files to harvest. | ||
396 | %(HarvestFile.Transforms) - XSL transforms to apply to the harvested WiX. | ||
397 | %(HarvestFile.ComponentGroupName) - The name of the ComponentGroup to create. | ||
398 | %(HarvestFile.DirectoryRefId) - The ID of the directory to reference instead of TARGETDIR. | ||
399 | %(HarvestFile.PreprocessorVariable) - Substitute SourceDir for another variable name (ex: var.Dir). | ||
400 | %(HarvestFile.SuppressCom) - Suppress COM elements. | ||
401 | %(HarvestFile.SuppressRootDirectory) - Suppress a Directory element for the root directory. | ||
402 | $(HarvestFile.SuppressRegistry) - Suppress registry harvesting. | ||
403 | |||
404 | [OUT] | ||
405 | $(IntermediateOutputPath)_%(HarvestFile.Filename)_file.wxs | ||
406 | - The generated .wxs files which are added to the @(Compile) item list. | ||
407 | ================================================================================================ | ||
408 | --> | ||
409 | |||
410 | <ItemDefinitionGroup> | ||
411 | <HarvestFile> | ||
412 | <Transforms>$(HarvestFileTransforms)</Transforms> | ||
413 | <ComponentGroupName>$(HarvestFileComponentGroupName)</ComponentGroupName> | ||
414 | <DirectoryRefId>$(HarvestFileDirectoryRefId)</DirectoryRefId> | ||
415 | <PreprocessorVariable>$(HarvestFilePreprocessorVariable)</PreprocessorVariable> | ||
416 | <SuppressCom>$(HarvestFileSuppressCom)</SuppressCom> | ||
417 | <SuppressRegistry>$(HarvestFileSuppressRegistry)</SuppressRegistry> | ||
418 | <SuppressRootDirectory>$(HarvestFileSuppressRootDirectory)</SuppressRootDirectory> | ||
419 | </HarvestFile> | ||
420 | </ItemDefinitionGroup> | ||
421 | |||
422 | <PropertyGroup> | ||
423 | <HarvestFileDependsOn></HarvestFileDependsOn> | ||
424 | </PropertyGroup> | ||
425 | <Target Name="HarvestFile" | ||
426 | DependsOnTargets="$(HarvestFileDependsOn)" | ||
427 | Inputs="@(HarvestFile);%(HarvestFile.Transforms)" | ||
428 | Outputs="@(HarvestFile->'$(IntermediateOutputPath)_%(ComponentGroupName)_%(DirectoryRefId)_%(Filename)%(Extension)_file.wxs')" | ||
429 | Condition=" '@(HarvestFile)' != '' "> | ||
430 | |||
431 | <HeatFile | ||
432 | NoLogo="true" | ||
433 | SuppressAllWarnings="$(HarvestFileSuppressAllWarnings)" | ||
434 | SuppressSpecificWarnings="$(HarvestFileSuppressSpecificWarnings)" | ||
435 | TreatWarningsAsErrors="$(HarvestFileTreatWarningsAsErrors)" | ||
436 | TreatSpecificWarningsAsErrors="$(HarvestFileTreatSpecificWarningsAsErrors)" | ||
437 | VerboseOutput="$(HarvestFileVerboseOutput)" | ||
438 | AutogenerateGuids="$(HarvestFileAutogenerateGuids)" | ||
439 | GenerateGuidsNow="$(HarvestFileGenerateGuidsNow)" | ||
440 | OutputFile="$(IntermediateOutputPath)_%(HarvestFile.ComponentGroupName)_%(HarvestFile.DirectoryRefId)_%(HarvestFile.Filename)%(HarvestFile.Extension)_file.wxs" | ||
441 | SuppressFragments="$(HarvestFileSuppressFragments)" | ||
442 | SuppressUniqueIds="$(HarvestFileSuppressUniqueIds)" | ||
443 | Transforms="%(HarvestFile.Transforms)" | ||
444 | File="@(HarvestFile)" | ||
445 | ComponentGroupName="%(HarvestFile.ComponentGroupName)" | ||
446 | DirectoryRefId="%(HarvestFile.DirectoryRefId)" | ||
447 | PreprocessorVariable="%(HarvestFile.PreprocessorVariable)" | ||
448 | SuppressCom="%(HarvestFile.SuppressCom)" | ||
449 | SuppressRegistry="%(HarvestFile.SuppressRegistry)" | ||
450 | SuppressRootDirectory="%(HarvestFile.SuppressRootDirectory)" | ||
451 | AdditionalOptions="$(HarvestFileAdditionalOptions)" | ||
452 | ToolPath="$(HeatToolDir)"> | ||
453 | |||
454 | <Output TaskParameter="OutputFile" ItemName="Compile" /> | ||
455 | <Output TaskParameter="OutputFile" ItemName="FileWrites" /> | ||
456 | |||
457 | </HeatFile> | ||
458 | |||
459 | </Target> | ||
460 | |||
461 | <!-- | ||
462 | ================================================================================================ | ||
463 | RefreshGeneratedFile | ||
464 | |||
465 | Generates code based on metadata defined in project references. | ||
466 | |||
467 | [IN] | ||
468 | @(_MSBuildResolvedProjectReferencePaths) - The list of MSBuildable project references. | ||
469 | |||
470 | [OUT] | ||
471 | @(_GeneratedFiles) - The generated source file. | ||
472 | ================================================================================================ | ||
473 | --> | ||
474 | <PropertyGroup> | ||
475 | <RefreshGeneratedFileDependsOn></RefreshGeneratedFileDependsOn> | ||
476 | </PropertyGroup> | ||
477 | <Target Name="RefreshGeneratedFile" | ||
478 | DependsOnTargets="$(RefreshGeneratedFileDependsOn)" | ||
479 | Inputs="@(_MSBuildResolvedProjectReferencePaths);@(Compile);$(ProjectPath)" | ||
480 | Outputs="@(_GeneratedFiles)" | ||
481 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Package' or '$(OutputType)' == 'PatchCreation' or '$(OutputType)' == 'Module') and '@(_GeneratedFiles)' != '' "> | ||
482 | |||
483 | <RefreshGeneratedFile | ||
484 | GeneratedFiles="@(_GeneratedFiles)" | ||
485 | ProjectReferencePaths="@(_MSBuildResolvedProjectReferencePaths)" /> | ||
486 | |||
487 | </Target> | ||
488 | |||
489 | <!-- | ||
490 | ================================================================================================ | ||
491 | RefreshBundleGeneratedFile | ||
492 | |||
493 | Generates code for bundle projects based on metadata defined in project references. | ||
494 | |||
495 | [IN] | ||
496 | @(_MSBuildResolvedProjectReferencePaths) - The list of MSBuildable project references. | ||
497 | |||
498 | [OUT] | ||
499 | @(_GeneratedFiles) - The generated source file. | ||
500 | ================================================================================================ | ||
501 | --> | ||
502 | <PropertyGroup> | ||
503 | <RefreshBundleGeneratedFileDependsOn></RefreshBundleGeneratedFileDependsOn> | ||
504 | </PropertyGroup> | ||
505 | <Target Name="RefreshBundleGeneratedFile" | ||
506 | DependsOnTargets="$(RefreshBundleGeneratedFileDependsOn)" | ||
507 | Inputs="@(_MSBuildResolvedProjectReferencePaths);@(Compile);$(ProjectPath)" | ||
508 | Outputs="@(_GeneratedFiles)" | ||
509 | Condition=" $(EnableProjectHarvesting) and ('$(OutputType)' == 'Bundle' and '@(_GeneratedFiles)' != '') "> | ||
510 | |||
511 | <RefreshBundleGeneratedFile | ||
512 | GeneratedFiles="@(_GeneratedFiles)" | ||
513 | ProjectReferencePaths="@(_MSBuildResolvedProjectReferencePaths)" /> | ||
514 | </Target> | ||
515 | |||
516 | </Project> | ||