Skip to content

Commit 7063711

Browse files
committed
Merge branch 'wtgodbe/Wix5' of https://github.com/dotnet/aspnetcore into wtgodbe/Wix5
2 parents 55ab66b + 7f377c4 commit 7063711

File tree

10 files changed

+101
-140
lines changed

10 files changed

+101
-140
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<!-- Targets for making .wixproj better. -->
2+
<Project>
3+
<ItemDefinitionGroup>
4+
<!-- Override the MicroBuild default certs which still uses MicrosoftSHA1 and Microsoft401 -->
5+
<SignCabs>
6+
<Authenticode>Microsoft400</Authenticode>
7+
</SignCabs>
8+
<SignMsi>
9+
<Authenticode>Microsoft400</Authenticode>
10+
</SignMsi>
11+
<SignBundle>
12+
<Authenticode>Microsoft400</Authenticode>
13+
</SignBundle>
14+
<SignBundleEngine>
15+
<Authenticode>Microsoft400</Authenticode>
16+
</SignBundleEngine>
17+
</ItemDefinitionGroup>
18+
19+
<PropertyGroup Condition="'$(OutputType)' == 'package'">
20+
<!-- Set package version for SharedFx & TargetingPack wixproj's -->
21+
<!-- Everything built in those projects _except_ the final package & MSI are shipping assets. -->
22+
<_GeneratedPackageVersion>$(PackageVersion)</_GeneratedPackageVersion>
23+
<_GeneratedPackageVersion
24+
Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)</_GeneratedPackageVersion>
25+
<!-- Insert PackageVersion into OutputName for SharedFx & TargetingPack -->
26+
<OutputName Condition="'$(OutputNamePrefix)' != '' AND '$(OutputNameSuffix)' != ''">$(OutputNamePrefix)$(_GeneratedPackageVersion)$(OutputNameSuffix)</OutputName>
27+
28+
<EmbedCab Condition="'$(EmbedCab)' == ''">yes</EmbedCab>
29+
<InstallDir>$(ProductName)</InstallDir>
30+
31+
<DefineConstants Condition="'$(Configuration)' == 'Debug'">$(DefineConstants);Debug</DefineConstants>
32+
<DefineConstants>$(DefineConstants);EmbedCab=$(EmbedCab)</DefineConstants>
33+
</PropertyGroup>
34+
35+
<PropertyGroup Condition=" '$(OutputType)' == 'package' AND '$(Cabinet)' == '' ">
36+
<Cabinet>$(OutputName.Replace('-', '_')).cab</Cabinet>
37+
<Cabinet Condition=" '$(EmbedCab)' != 'yes' ">$(OutputName.Replace('_win', '')).cab</Cabinet>
38+
</PropertyGroup>
39+
40+
<PropertyGroup>
41+
<Culture Condition=" '$(Culture)' == '' ">en-US</Culture>
42+
<Cultures Condition=" '$(Cultures)' == '' ">$(Culture)</Cultures>
43+
<InstallerPlatform>$(Platform)</InstallerPlatform>
44+
<OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir>
45+
46+
<DefineConstants>$(DefineConstants);Cabinet=$(Cabinet)</DefineConstants>
47+
<DefineConstants>$(DefineConstants);BinPath=$(OutputPath)$(Culture)\</DefineConstants>
48+
<DefineConstants>$(WixVariables);$(DefineConstants)</DefineConstants>
49+
</PropertyGroup>
50+
</Project>

eng/targets/Wix.Common.props

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
</PropertyGroup>
1111

1212
<PropertyGroup>
13+
<CustomBeforeWixTargets>$(MSBuildThisFileDirectory)BeforeWix.Common.targets</CustomBeforeWixTargets>
1314
<TargetFrameworkMoniker>Native,Version=v0.0</TargetFrameworkMoniker>
1415

1516
<MSBuildProjectExtensionsPath>$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath>
@@ -19,8 +20,6 @@
1920
<NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'==''">$(MSBuildToolsPath)\NuGet.targets</NuGetRestoreTargets>
2021
</PropertyGroup>
2122

22-
<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" Condition="'$(_ProjectExtensionsWereImported)' != 'true'" />
23-
2423
<ItemGroup Condition="'$(UseWix5)' != 'true'">
2524
<PackageReference Include="Microsoft.Signed.Wix" Version="$(WixVersion)" />
2625
</ItemGroup>

eng/targets/Wix.Common.targets

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,4 @@
1-
<!-- Targets for making .wixproj better. -->
21
<Project>
3-
4-
<ItemDefinitionGroup>
5-
<!-- Override the MicroBuild default certs which still uses MicrosoftSHA1 and Microsoft401 -->
6-
<SignCabs>
7-
<Authenticode>Microsoft400</Authenticode>
8-
</SignCabs>
9-
<SignMsi>
10-
<Authenticode>Microsoft400</Authenticode>
11-
</SignMsi>
12-
<SignBundle>
13-
<Authenticode>Microsoft400</Authenticode>
14-
</SignBundle>
15-
<SignBundleEngine>
16-
<Authenticode>Microsoft400</Authenticode>
17-
</SignBundleEngine>
18-
</ItemDefinitionGroup>
19-
20-
<PropertyGroup Condition="'$(OutputType)' == 'package'">
21-
<!-- Set package version for SharedFx & TargetingPack wixproj's -->
22-
<!-- Everything built in those projects _except_ the final package & MSI are shipping assets. -->
23-
<_GeneratedPackageVersion>$(PackageVersion)</_GeneratedPackageVersion>
24-
<_GeneratedPackageVersion
25-
Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)</_GeneratedPackageVersion>
26-
<!-- Insert PackageVersion into OutputName for SharedFx & TargetingPack -->
27-
<OutputName Condition="'$(OutputNamePrefix)' != '' AND '$(OutputNameSuffix)' != ''">$(OutputNamePrefix)$(_GeneratedPackageVersion)$(OutputNameSuffix)</OutputName>
28-
29-
<EmbedCab Condition="'$(EmbedCab)' == ''">yes</EmbedCab>
30-
<InstallDir>$(ProductName)</InstallDir>
31-
32-
<DefineConstants Condition="'$(Configuration)' == 'Debug'">$(DefineConstants);Debug</DefineConstants>
33-
<DefineConstants>$(DefineConstants);EmbedCab=$(EmbedCab)</DefineConstants>
34-
</PropertyGroup>
35-
36-
<PropertyGroup Condition=" '$(OutputType)' == 'package' AND '$(Cabinet)' == '' ">
37-
<Cabinet>$(OutputName.Replace('-', '_')).cab</Cabinet>
38-
<Cabinet Condition=" '$(EmbedCab)' != 'yes' ">$(OutputName.Replace('_win', '')).cab</Cabinet>
39-
</PropertyGroup>
40-
41-
<PropertyGroup>
42-
<Culture Condition=" '$(Culture)' == '' ">en-US</Culture>
43-
<Cultures Condition=" '$(Cultures)' == '' ">$(Culture)</Cultures>
44-
<InstallerPlatform>$(Platform)</InstallerPlatform>
45-
<OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir>
46-
47-
<DefineConstants>$(DefineConstants);Cabinet=$(Cabinet)</DefineConstants>
48-
<DefineConstants>$(DefineConstants);BinPath=$(OutputPath)$(Culture)\</DefineConstants>
49-
<DefineConstants>$(WixVariables);$(DefineConstants)</DefineConstants>
50-
</PropertyGroup>
51-
52-
<Import Project="$(NuGetRestoreTargets)" />
53-
<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.targets" />
54-
<Import Project="$(WixTargetsPath)" Condition="'$(WixTargetsPath)' != '' " />
552
<!-- Don't import the Microbuild signing targets when post build sign is enabled. They override the
563
standard Wix targets for signing, and call ESRP directly (rather than through SignTool). So without this,
574
ASPNetCore will sign even when PostbuildSign == true -->

global.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25372.103",
3232
"Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25372.103",
3333
"Microsoft.Build.NoTargets": "3.7.0",
34-
"Microsoft.Build.Traversal": "3.4.0"
34+
"Microsoft.Build.Traversal": "3.4.0",
35+
"Microsoft.WixToolset.Sdk": "5.0.2-dotnet.2737382"
3536
}
3637
}

src/Installers/Windows/AspNetCoreModule-Setup/ANCMIISExpressV2/AncmIISExpressV2.wixproj

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
5?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
4-
1+
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the MIT license. See License.txt in the project root for full license information. -->
2+
<Project>
3+
<Import Project="Sdk.props" Sdk="Microsoft.WixToolset.Sdk" />
54
<PropertyGroup>
65
<Name>AspNetCoreModuleV2IISExpress</Name>
76
<IsShipping>true</IsShipping>
@@ -15,23 +14,10 @@
1514
<TempPlatform Condition="'$(Platform)' == 'x86'">Win32</TempPlatform>
1615
<TempPlatform Condition="'$(Platform)' == 'arm64'">ARM64</TempPlatform>
1716
<ToolsetInstallerNuspecFile>$(MSBuildProjectDirectory)\$(MSBuildProjectName).nuspec</ToolsetInstallerNuspecFile>
17+
<!-- We import D.B.T ourselves in this file -->
18+
<ImportDirectoryBuildTargets>false</ImportDirectoryBuildTargets>
1819
</PropertyGroup>
1920

20-
<ItemGroup>
21-
<WixExtension Include="WixUtilExtension">
22-
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
23-
<Name>WixUtilExtension</Name>
24-
</WixExtension>
25-
<WixExtension Include="WixDependencyExtension">
26-
<HintPath>$(WixExtDir)\WixDependencyExtension.dll</HintPath>
27-
<Name>WixDependencyExtension</Name>
28-
</WixExtension>
29-
<WixExtension Include="WixUIExtension">
30-
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
31-
<Name>WixUIExtension</Name>
32-
</WixExtension>
33-
</ItemGroup>
34-
3521
<ItemGroup>
3622
<Compile Include="ancm_iis_expressv2.wxs" />
3723
<Compile Include="$(IIS-Setup)iisca\wix5\iisca.wxs">
@@ -66,6 +52,7 @@
6652
<Copy SourceFiles="@(BuildContentForAncmHandler)" DestinationFolder="$(InstallersOutputPath)\IISExpressSymbols\$(TempPlatform)" />
6753
</Target>
6854

55+
<Import Project="Sdk.targets" Sdk="Microsoft.WixToolset.Sdk" />
6956
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
7057
<Import Project="..\build\settings.props" />
7158

src/Installers/Windows/AspNetCoreModule-Setup/ANCMV2/AncmV2.wixproj

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
4-
1+
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the MIT license. See License.txt in the project root for full license information. -->
2+
<Project>
3+
<Import Project="Sdk.props" Sdk="Microsoft.WixToolset.Sdk" />
54
<PropertyGroup>
65
<Name>AspNetCoreModuleV2</Name>
76
<IsShipping>true</IsShipping>
@@ -12,23 +11,10 @@
1211
<SchemaVersion>2.0</SchemaVersion>
1312
<DisableGuidGeneration>true</DisableGuidGeneration>
1413
<ToolsetInstallerNuspecFile>$(MSBuildProjectDirectory)\$(MSBuildProjectName).nuspec</ToolsetInstallerNuspecFile>
14+
<!-- We import D.B.T ourselves in this file -->
15+
<ImportDirectoryBuildTargets>false</ImportDirectoryBuildTargets>
1516
</PropertyGroup>
1617

17-
<ItemGroup>
18-
<WixExtension Include="WixUtilExtension">
19-
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
20-
<Name>WixUtilExtension</Name>
21-
</WixExtension>
22-
<WixExtension Include="WixDependencyExtension">
23-
<HintPath>$(WixExtDir)\WixDependencyExtension.dll</HintPath>
24-
<Name>WixDependencyExtension</Name>
25-
</WixExtension>
26-
<WixExtension Include="WixUIExtension">
27-
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
28-
<Name>WixUIExtension</Name>
29-
</WixExtension>
30-
</ItemGroup>
31-
3218
<ItemGroup>
3319
<Compile Include="aspnetcoremodulev2.wxs" />
3420
<Compile Include="$(IIS-Setup)iisca\wix5\iisca.wxs">
@@ -53,6 +39,7 @@
5339
</ProjectReference>
5440
</ItemGroup>
5541

42+
<Import Project="Sdk.targets" Sdk="Microsoft.WixToolset.Sdk" />
5643
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
5744
<Import Project="..\build\settings.props" />
5845

src/Installers/Windows/HostOptions/HostOptions.wixproj

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
4-
1+
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the MIT license. See License.txt in the project root for full license information. -->
2+
<Project>
3+
<Import Project="Sdk.props" Sdk="Microsoft.WixToolset.Sdk" />
54
<PropertyGroup>
65
<Name>$(HostOptionsName)</Name>
76
<OutputName>$(HostOptionsName)</OutputName>
@@ -12,6 +11,8 @@
1211
<ProjectGuid>20248cd1-c5aa-4f42-ad88-bc260d64deea</ProjectGuid>
1312
<IsShipping>true</IsShipping>
1413
<SchemaVersion>2.0</SchemaVersion>
14+
<!-- We import D.B.T ourselves in this file -->
15+
<ImportDirectoryBuildTargets>false</ImportDirectoryBuildTargets>
1516

1617
<!-- Namespace used to generate stable UUID3 GUIDs for MSI ProductCode, etc. DO NOT CHANGE THIS. -->
1718
<NamespaceGuid>$(HostingBundleNamespaceGuid)</NamespaceGuid>
@@ -21,6 +22,7 @@
2122
<Compile Include="Product.wxs" />
2223
</ItemGroup>
2324

25+
<Import Project="Sdk.targets" Sdk="Microsoft.WixToolset.Sdk" />
2426
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
2527

2628
<PropertyGroup>

src/Installers/Windows/WindowsHostingBundle/WindowsHostingBundle.wixproj

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
4-
1+
<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the MIT license. See License.txt in the project root for full license information. -->
2+
<Project>
3+
<Import Project="Sdk.props" Sdk="Microsoft.WixToolset.Sdk" />
54
<PropertyGroup>
65
<Name>WindowsServerHostingBundle</Name>
76
<OutputName>WindowsServerHostingBundle</OutputName>
@@ -10,26 +9,13 @@
109
<OutputType>Bundle</OutputType>
1110
<Platform>x86</Platform>
1211
<SchemaVersion>2.0</SchemaVersion>
12+
<!-- We import D.B.T ourselves in this file -->
13+
<ImportDirectoryBuildTargets>false</ImportDirectoryBuildTargets>
1314

1415
<!-- Namespace used to generate stable UUID3 GUIDs for MSI ProductCode, etc. DO NOT CHANGE THIS. -->
1516
<NamespaceGuid>$(HostingBundleNamespaceGuid)</NamespaceGuid>
1617
</PropertyGroup>
1718

18-
<ItemGroup>
19-
<WixExtension Include="WixUtilExtension">
20-
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
21-
<Name>WixUtilExtension</Name>
22-
</WixExtension>
23-
<WixExtension Include="WixDependencyExtension">
24-
<HintPath>$(WixExtDir)\WixDependencyExtension.dll</HintPath>
25-
<Name>WixDependencyExtension</Name>
26-
</WixExtension>
27-
<WixExtension Include="WixBalExtension">
28-
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
29-
<Name>WixBalExtension</Name>
30-
</WixExtension>
31-
</ItemGroup>
32-
3319
<ItemGroup>
3420
<Content Include="thm.xml" />
3521
<Compile Include="ANCM.wxs" />
@@ -94,6 +80,7 @@
9480

9581
<Import Project="Product.targets" />
9682

83+
<Import Project="Sdk.targets" Sdk="Microsoft.WixToolset.Sdk" />
9784
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
9885

9986
<PropertyGroup>

src/Installers/Windows/Wix.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99

1010
<!-- Additional parameters for Light/Candle-->
1111
<PropertyGroup>
12-
<LinkerAdditionalOptions>-fv</LinkerAdditionalOptions>
1312
<SuppressIces>ICE61</SuppressIces>
1413
<SuppressWarnings>1033</SuppressWarnings>
14+
<!-- Currently, WiX only supports 'full' for the -pdbType option. This affects both bundle and package projects. -->
15+
<DebugType>full</DebugType>
1516
</PropertyGroup>
1617

1718
<PropertyGroup>

src/Installers/Windows/Wix.targets

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -96,28 +96,28 @@
9696
<Copy SourceFiles="@(_cabs)" DestinationFolder="$(InstallersOutputPath)" />
9797
</Target>
9898

99-
<Target Name="CreateWixPackageDrop" AfterTargets="CopyToArtifactsDirectory">
100-
<MakeDir Directories="$(WixCommandPackagesDir)" />
101-
<ItemGroup>
102-
<WixInstallerFilesToProcess Include="$(TargetPath)" />
103-
<WixInstallerFilesToProcess Include="$(InstallersOutputPath)$(PackageFileName)"
104-
Condition=" '$(IsShipping)' == 'true' AND '$(SkipCopyToArtifactsDirectory)' != 'true' " />
105-
</ItemGroup>
106-
<CreateLightCommandPackageDrop
107-
LightCommandWorkingDir="$(WixCommandObjDir)"
108-
OutputFolder="$(WixCommandPackagesDir)"
109-
NoLogo="true"
110-
Cultures="en-us"
111-
InstallerFile="%(WixInstallerFilesToProcess.Identity)"
112-
AdditionalBasePaths="$(MSBuildProjectDirectory);$(PkgMicrosoft_DotNet_Build_Tasks_Installers)\build\wix\bundle"
113-
WixExtensions="@(WixExtension)"
114-
Loc="@(EmbeddedResource)"
115-
Sice="$(SuppressIces)"
116-
WixProjectFile="$(MSBuildProjectFile)"
117-
Fv="true"
118-
WixSrcFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)">
119-
<Output TaskParameter="OutputFile" PropertyName="_LightCommandPackageNameOutput" />
120-
</CreateLightCommandPackageDrop>
99+
<Target Name="GenerateWixpackPackage" AfterTargets="CoreCompile">
100+
<PropertyGroup>
101+
<WixpackWorkingDir>$(IntermediateOutputPath)wixpack</WixpackWorkingDir>
102+
<WixpackOutputDir>$(ArtifactsNonShippingPackagesDir)</WixpackOutputDir>
103+
</PropertyGroup>
104+
105+
<CreateWixBuildWixpack
106+
BindTrackingFile="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)"
107+
Cultures="%(CultureGroup.Identity)"
108+
DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)"
109+
Extensions="@(_ResolvedWixExtensionPaths)"
110+
InstallerPlatform="$(InstallerPlatform)"
111+
InstallerFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetFileName)"
112+
IntermediateDirectory="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)"
113+
OutputFolder="$(WixpackOutputDir)"
114+
OutputType="$(OutputType)"
115+
PdbFile="$(IntermediateOutputPath)%(CultureGroup.OutputFolder)$(TargetPdbFileName)"
116+
PdbType="$(DebugType)"
117+
SourceFiles="@(Compile)"
118+
WixpackWorkingDir="$(WixpackWorkingDir)">
119+
<Output TaskParameter="OutputFile" PropertyName="_WixBuildCommandPackageNameOutput" />
120+
</CreateWixBuildWixpack>
121121
</Target>
122122

123123
<!-- wixprojs don't do any packaging but the target is called from Arcade's Build.proj. -->

0 commit comments

Comments
 (0)