aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.BuildTasks
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-05-28 23:00:05 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-05-28 23:10:12 +1000
commitef0dbdc18c4335fef395fb954845031ea90503be (patch)
tree1d9bec91f1fbef5b24cdfdb45a05ef2ee5e6caee /src/WixToolset.BuildTasks
parent551f2a43de0465202e3a3aca24379481cc35733e (diff)
downloadwix-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.csproj9
-rw-r--r--src/WixToolset.BuildTasks/redirects/wix.ca.targets10
-rw-r--r--src/WixToolset.BuildTasks/redirects/wix.targets10
-rw-r--r--src/WixToolset.BuildTasks/wix.ca.targets123
-rw-r--r--src/WixToolset.BuildTasks/wix.harvest.targets505
-rw-r--r--src/WixToolset.BuildTasks/wix.signing.targets370
-rw-r--r--src/WixToolset.BuildTasks/wix.targets1063
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 &lt;Import&gt; 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 &quot;$(MSBuildProjectFile)&quot;. 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 &quot;$(MSBuildProjectFile)&quot;. $(_OutputTypeDescription)" />
227
228 <Error
229 Code="WIX102"
230 Condition=" '$(MSBuildToolsVersion)' == '' OR '$(MSBuildToolsVersion)' &lt; '4.0' "
231 Text="MSBuild v$(MSBuildToolsVersion) is not supported by the project &quot;$(MSBuildProjectFile)&quot;. 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 &quot;$(MSBuildProjectFile)&quot;. 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) -&gt; $(TargetPath)" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" />
1036 <!--<Message Importance="High" Text="$(MSBuildProjectName) -&gt; @(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>