aboutsummaryrefslogtreecommitdiffstats
path: root/installer/installer.wixproj
blob: 69b40a612943b654107da8a18128099db53e5048 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version="1.0" encoding="UTF-8"?>
<!--
  SPDX-License-Identifier: GPL-2.0

  Copyright (C) 2018-2019 WireGuard LLC. All Rights Reserved.
-->
<Project
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  ToolsVersion="4.0"
  InitialTargets="EnsureWixToolsetInstalled;HashInstallerLibrary"
  DefaultTargets="Build">
  <PropertyGroup>
    <Configuration Condition="'$(Configuration)'==''">Release</Configuration>
    <Platform Condition="'$(Platform)'==''">x64</Platform>
    <ProjectGuid>{F95A1EBF-1E19-47D4-9D8C-4F0C41B9E3B8}</ProjectGuid>
    <ProjectName>wintun</ProjectName>
    <OutputType>Module</OutputType>
    <DefineSolutionProperties>false</DefineSolutionProperties>
  </PropertyGroup>

  <Import Project="..\wintun.props"/>

  <PropertyGroup>
    <IntermediateOutputPath>..\$(WintunPlatform)\$(Configuration)\</IntermediateOutputPath>
    <OutputPath>..\$(WintunPlatform)\$(Configuration)\</OutputPath>
    <OutputName>$(ProjectName)</OutputName>
    <DefineConstants>WINTUN_VERSION=$(WintunVersion);$(DefineConstants)</DefineConstants>
    <SuppressSpecificWarnings>1006;1086;$(SuppressSpecificWarnings)</SuppressSpecificWarnings>
    <LinkerSuppressSpecificWarnings>1079;1103;$(LinkerSuppressSpecificWarnings)</LinkerSuppressSpecificWarnings>
    <SuppressIces>ICE30;ICE49;$(SuppressIces)</SuppressIces>
    <LinkerAdditionalOptions>-b output_dir="$(IntermediateOutputPath.TrimEnd('\'))" $(LinkerAdditionalOptions)</LinkerAdditionalOptions>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='Release'">
    <SuppressPdbOutput>true</SuppressPdbOutput>
    <OutputPath>..\$(DistributionDir)</OutputPath>
    <OutputName>$(ProjectName)-$(WintunPlatform)-$(WintunVersionStr)</OutputName>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="installer.wxs"/>
  </ItemGroup>

  <Import Project="$(MSBuildProjectName).user" Condition="exists('$(MSBuildProjectName).user')"/>
  <Import Project="$(WixTargetsPath)" Condition="'$(WixTargetsPath)'!=''"/>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition="'$(WixTargetsPath)'=='' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets')"/>
  <Target Name="EnsureWixToolsetInstalled" Condition="'$(WixTargetsImported)'!='true'">
    <Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/"/>
  </Target>

  <Target Name="HashInstallerLibrary">
    <GetFileHash Files="$(IntermediateOutputPath)installer.dll" Algorithm="SHA256" HashEncoding="hex">
      <Output TaskParameter="Items" ItemName="InstallerLibraryHash"/>
    </GetFileHash>
    <PropertyGroup>
      <DefineConstants>$(DefineConstants);INSTALLER_LIBRARY_HASH=@(InstallerLibraryHash->Metadata('FileHash'));INSTALLER_LIBRARY_TIME=$([System.IO.File]::GetLastWriteTime('$(IntermediateOutputPath)installer.dll').Ticks)</DefineConstants>
    </PropertyGroup>
  </Target>

  <Import Project="..\wintun.vcxproj.user" Condition="exists('..\wintun.vcxproj.user')"/>
  <PropertyGroup>
    <SigningCertificate Condition="$(SignMode)=='TestSign' And '$(TestCertificate)'!=''">$(TestCertificate)</SigningCertificate>
    <SigningCertificate Condition="$(SignMode)=='ProductionSign' And '$(ProductionCertificate)'!=''">$(ProductionCertificate)</SigningCertificate>
    <BuildDependsOn Condition="'$(SigningCertificate)'!='' And '$(TimeStampServer)'!=''">$(BuildDependsOn);SignTarget</BuildDependsOn>
    <CleanDependsOn>CleanSignTarget;$(CleanDependsOn)</CleanDependsOn>
  </PropertyGroup>
  <Target
    Name="SignTarget"
    Inputs="$(TargetPath)"
    Outputs="$(IntermediateOutputPath)$(TargetName).sign">
    <Exec Command="signtool.exe sign /sha1 &quot;$(SigningCertificate)&quot; /fd sha256 /tr &quot;$(TimeStampServer)&quot; /td sha256 &quot;$(TargetPath)&quot;" />
    <Touch Files="$(IntermediateOutputPath)$(TargetName).sign" AlwaysCreate="true"/>
  </Target>
  <Target Name="CleanSignTarget">
    <Delete Files="$(IntermediateOutputPath)$(TargetName).sign"/>
  </Target>
</Project>