Skip to content

Commit fa3a3dd

Browse files
authored
Merge pull request #17661 from iterate-ch/feature/windows-cng
Sign using SignTool CSP
2 parents 5d1b4b8 + 5b7b86a commit fa3a3dd

File tree

11 files changed

+125
-109
lines changed

11 files changed

+125
-109
lines changed

Directory.Build.props

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,8 @@
5050

5151
<Import Project="$(GeneratedMSBuildDir)Version.props" Condition="Exists('$(GeneratedMSBuildDir)Version.props')" />
5252

53+
<PropertyGroup>
54+
<SignToolExecutablePath>$(PATH)</SignToolExecutablePath>
55+
</PropertyGroup>
56+
5357
</Project>

Directory.Build.targets

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,44 @@
9696
</ItemGroup>
9797
</Target>
9898

99+
<PropertyGroup>
100+
<_SignToolArgs Condition="'$(SignTool)'=='cng'">_SignToolArgsCNG</_SignToolArgs>
101+
<_SignToolArgs Condition="'$(_SignToolArgs)'==''">_SignToolArgsCertificateStore</_SignToolArgs>
102+
103+
<SignToolArgsDependsOn>$(_SignToolArgs);SignToolExecutablePath</SignToolArgsDependsOn>
104+
</PropertyGroup>
105+
106+
<Target Name="SignToolExecutablePath" Returns="$(SignToolExecutablePath);$(SignToolExecutable)">
107+
<PropertyGroup>
108+
<SignToolExecutable Condition="'$(SignToolExecutable)'==''">SignTool.exe</SignToolExecutable>
109+
<SignToolExecutablePath>$(WindowsSdk_ExecutablePath);$(SignToolExecutablePath)</SignToolExecutablePath>
110+
</PropertyGroup>
111+
</Target>
112+
113+
<Target Name="SignToolArgsBase" Returns="$(SignToolArgsBase)">
114+
<PropertyGroup>
115+
<SignToolArgsBase>sign /d "Cyberduck" /fd sha256 /tr "http://timestamp.acs.microsoft.com" /td "sha256" /a</SignToolArgsBase>
116+
</PropertyGroup>
117+
</Target>
118+
119+
<Target Name="SignToolArgs" DependsOnTargets="$(SignToolArgsDependsOn)">
120+
<Error Text="'$(SignTool)' unsupported." Condition="'$(_SignToolArgs)'==''" />
121+
<PropertyGroup>
122+
<SignToolArgs>"$(SignToolExecutable)" $(SignToolArgsBase)</SignToolArgs>
123+
</PropertyGroup>
124+
<ItemGroup>
125+
<SignToolEnvironmentVariable Include="PATH=$([MSBuild]::Escape('$(SignToolExecutablePath)'))" />
126+
</ItemGroup>
127+
</Target>
128+
<Target Name="_SignToolArgsCertificateStore" DependsOnTargets="SignToolArgsBase" Returns="$(SignToolArgsBase)">
129+
<PropertyGroup>
130+
<SignToolArgsBase>$(SignToolArgsBase) /sm /n "iterate GmbH"</SignToolArgsBase>
131+
</PropertyGroup>
132+
</Target>
133+
<Target Name="_SignToolArgsCNG" DependsOnTargets="SignToolArgsBase" Returns="$(SignToolArgsBase)">
134+
<PropertyGroup>
135+
<SignToolArgsBase>$(SignToolArgsBase) /f "$(CyberduckDir)setup\cert\certificate.crt" /csp "$(SignToolCSP)" /kc "$(SignToolKC)"</SignToolArgsBase>
136+
</PropertyGroup>
137+
</Target>
138+
99139
</Project>

build.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@
137137
</condition>
138138
<property name="msbuild.configuration" value="Release"/>
139139

140+
<property name="signtool" value="cng" />
140141
<property name="revision" value="0" />
141142
<copy todir="${build}/generated/msbuild" overwrite="True">
142143
<resources>

cli/src/main/wix/Bootstrapper/duck.bootstrapper.wixproj

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,15 @@
1919
<ItemGroup>
2020
<Compile Include="Cyberduck CLI Bundle.wxs" />
2121
</ItemGroup>
22+
23+
<PropertyGroup>
24+
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
25+
</PropertyGroup>
26+
<Import Project="$(VCTargetsPath)Microsoft.Cpp.MSVC.Toolset.Common.props" />
27+
2228
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
2329
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
30+
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.targets', '$(MSBuildThisFileDirectory)'))" />
2431
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
2532
<Error Text="The WiX Toolset v3.14 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
2633
</Target>
@@ -49,34 +56,11 @@
4956
</ProjectReference>
5057
</ItemGroup>
5158

52-
<Target Name="UsesFrameworkSdk">
53-
<GetFrameworkSdkPath>
54-
<Output TaskParameter="Path" PropertyName="FrameworkSdkPath" />
55-
</GetFrameworkSdkPath>
56-
<PropertyGroup>
57-
<WinSDK>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0@InstallationFolder)</WinSDK>
58-
<WinSDK Condition="('@(WinSDK)'=='')">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots@KitsRoot10)</WinSDK>
59-
<Win10SDKBinPath>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)bin\</Win10SDKBinPath>
60-
<Win10SDKVersion>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion).0\</Win10SDKVersion>
61-
<Win10SDKVerBinPath>$(Win10SDKBinPath)$(Win10SDKVersion)</Win10SDKVerBinPath>
62-
</PropertyGroup>
59+
<Target Name="SignBundleEngine" DependsOnTargets="SignToolArgs">
60+
<Exec Command="$(SignToolArgs) &quot;@(SignBundleEngine)&quot;" EnvironmentVariables="@(SignToolEnvironmentVariable)" />
6361
</Target>
64-
<Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk">
65-
<PropertyGroup>
66-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(FrameworkSdkPath)bin\signtool.exe')">$(FrameworkSdkPath)bin\signtool.exe</SignToolPath>
67-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(WinSDK)\bin\x86\signtool.exe')">$(WinSDK)\bin\x86\signtool.exe</SignToolPath>
68-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(Win10SDKVerBinPath)x86\signtool.exe')">$(Win10SDKVerBinPath)x86\signtool.exe</SignToolPath>
69-
</PropertyGroup>
70-
</Target>
71-
72-
<Target Name="SignBundleEngine" DependsOnTargets="UsesSignTool">
73-
<Exec
74-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck CLI&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;@(SignBundleEngine)&quot;"/>
75-
</Target>
76-
77-
<Target Name="SignBundle" Condition="'$(SignOutput)' == 'true'" DependsOnTargets="UsesSignTool">
78-
<Exec
79-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck CLI&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;@(SignBundle)&quot;"/>
62+
<Target Name="SignBundle" DependsOnTargets="SignToolArgs">
63+
<Exec Command="$(SignToolArgs) &quot;@(SignBundle)&quot;" EnvironmentVariables="@(SignToolEnvironmentVariable)" />
8064
</Target>
8165

8266
<!--

cli/src/main/wix/Bundle/duck.bundle.wixproj

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@
4242
</HarvestDirectory>
4343
</ItemGroup>
4444

45+
<PropertyGroup>
46+
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
47+
</PropertyGroup>
48+
<Import Project="$(VCTargetsPath)Microsoft.Cpp.MSVC.Toolset.Common.props" />
49+
4550
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
4651
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
52+
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.targets', '$(MSBuildThisFileDirectory)'))" />
4753
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
4854
<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/" />
4955
</Target>
@@ -65,40 +71,31 @@
6571
</WixExtension>
6672
</ItemGroup>
6773

68-
<Target Name="UsesFrameworkSdk">
69-
<GetFrameworkSdkPath>
70-
<Output TaskParameter="Path" PropertyName="FrameworkSdkPath" />
71-
</GetFrameworkSdkPath>
72-
<PropertyGroup>
73-
<WinSDK>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0@InstallationFolder)</WinSDK>
74-
<WinSDK Condition="('@(WinSDK)'=='')">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots@KitsRoot10)</WinSDK>
75-
<Win10SDKBinPath>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)bin\</Win10SDKBinPath>
76-
<Win10SDKVersion>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion).0\</Win10SDKVersion>
77-
<Win10SDKVerBinPath>$(Win10SDKBinPath)$(Win10SDKVersion)</Win10SDKVerBinPath>
78-
</PropertyGroup>
79-
</Target>
80-
<Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk">
81-
<PropertyGroup>
82-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(FrameworkSdkPath)bin\signtool.exe')">$(FrameworkSdkPath)bin\signtool.exe</SignToolPath>
83-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(WinSDK)\bin\x86\signtool.exe')">$(WinSDK)\bin\x86\signtool.exe</SignToolPath>
84-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(Win10SDKVerBinPath)x86\signtool.exe')">$(Win10SDKVerBinPath)x86\signtool.exe</SignToolPath>
85-
</PropertyGroup>
86-
</Target>
87-
<Target Name="SignMsi" DependsOnTargets="UsesSignTool">
88-
<Exec
89-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck CLI&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;%(SignMsi.FullPath)&quot;"/>
74+
<Target Name="SignMsi" DependsOnTargets="SignToolArgs">
75+
<Exec Command="$(SignToolArgs) &quot;%(SignMsi.FullPath)&quot;" EnvironmentVariables="@(SignToolEnvironmentVariable)" />
9076
</Target>
9177
<!--
9278
To modify your build process, add your task inside one of the targets below and uncomment it.
9379
Other similar extension points exist, see Wix.targets.
9480
-->
95-
<Target Name="SignDLLs" Condition="'$(SignOutput)' == 'true'" DependsOnTargets="UsesSignTool" AfterTargets="Compile" BeforeTargets="Link">
81+
<Target Name="_CollectPayload" Returns="@(SignPayload)">
9682
<ItemGroup>
97-
<Assemblies Include="$(TargetBuildDir)*.dll" />
98-
<Assemblies Include="$(TargetBuildDir)*.exe" />
83+
<SignPayload Include="$(TargetBuildDir)*.dll;$(TargetBuildDir)*.exe" />
9984
</ItemGroup>
85+
</Target>
86+
<Target Name="CollectSignPayload" DependsOnTargets="_CollectPayload;SignToolArgs" Outputs="%(SignPayload.Identity)" Returns="@(SignPayload)">
87+
<Exec Command="%22$(SignToolExecutable)%22 verify /q /pa %22%(SignPayload.Identity)%22"
88+
EnvironmentVariables="@(SignToolEnvironmentVariable)"
89+
IgnoreStandardErrorWarningFormat="true"
90+
IgnoreExitCode="true">
91+
<Output TaskParameter="ExitCode" PropertyName="PayloadSigned" />
92+
</Exec>
10093

101-
<Exec
102-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;$([System.IO.Path]::GetFullPath('%(Assemblies.Identity)'))&quot;"/>
94+
<ItemGroup>
95+
<SignPayload Remove="%(SignPayload.Identity)" Condition="'$(PayloadSigned)'=='0'" />
96+
</ItemGroup>
97+
</Target>
98+
<Target Name="SignPayload" Condition=" '$(SignOutput)' == 'true' " DependsOnTargets="CollectSignPayload;SignToolArgs" AfterTargets="Compile" BeforeTargets="Link">
99+
<Exec Command="$(SignToolArgs) @(SignPayload->'%22%(Identity)%22', ' ')" EnvironmentVariables="@(SignToolEnvironmentVariable)" Condition="'@(SignPayload)'!=''" />
103100
</Target>
104101
</Project>

cli/src/main/wix/Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<PropertyGroup>
2424
<OutputPath>$(OutputPath)$(Configuration)</OutputPath>
2525
<SetupDir>$(CyberduckDir)setup\wix\</SetupDir>
26+
<OutDir>$(OutputPath)</OutDir>
2627
</PropertyGroup>
2728

2829
</Project>

setup/cert/certificate.crt

1.55 KB
Binary file not shown.

src/template/msbuild/Version.props

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,10 @@
88
<Version>$(AssemblyVersion)</Version>
99
</PropertyGroup>
1010

11-
</Project>
11+
<PropertyGroup>
12+
<SignTool>${signtool}</SignTool>
13+
<SignToolCSP>${signtool.csp}</SignToolCSP>
14+
<SignToolKC>${signtool.kc}</SignToolKC>
15+
</PropertyGroup>
16+
17+
</Project>

windows/src/main/wix/Bootstrapper/Cyberduck.Bootstrapper.wixproj

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,15 @@
1919
<ItemGroup>
2020
<Compile Include="Cyberduck Bootstrapper.wxs" />
2121
</ItemGroup>
22+
23+
<PropertyGroup>
24+
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
25+
</PropertyGroup>
26+
<Import Project="$(VCTargetsPath)Microsoft.Cpp.MSVC.Toolset.Common.props" />
27+
2228
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
2329
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
30+
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.targets', '$(MSBuildThisFileDirectory)'))" />
2431
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
2532
<Error Text="The WiX Toolset v3.14 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
2633
</Target>
@@ -51,32 +58,12 @@
5158
<ItemGroup>
5259
<Content Include="InstallerTheme.xml" />
5360
</ItemGroup>
54-
<Target Name="UsesFrameworkSdk">
55-
<GetFrameworkSdkPath>
56-
<Output TaskParameter="Path" PropertyName="FrameworkSdkPath" />
57-
</GetFrameworkSdkPath>
58-
<PropertyGroup>
59-
<WinSDK>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0@InstallationFolder)</WinSDK>
60-
<WinSDK Condition="('@(WinSDK)'=='')">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots@KitsRoot10)</WinSDK>
61-
<Win10SDKBinPath>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)bin\</Win10SDKBinPath>
62-
<Win10SDKVersion>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion).0\</Win10SDKVersion>
63-
<Win10SDKVerBinPath>$(Win10SDKBinPath)$(Win10SDKVersion)</Win10SDKVerBinPath>
64-
</PropertyGroup>
65-
</Target>
66-
<Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk">
67-
<PropertyGroup>
68-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(FrameworkSdkPath)bin\signtool.exe')">$(FrameworkSdkPath)bin\signtool.exe</SignToolPath>
69-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(WinSDK)\bin\x86\signtool.exe')">$(WinSDK)\bin\x86\signtool.exe</SignToolPath>
70-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(Win10SDKVerBinPath)x86\signtool.exe')">$(Win10SDKVerBinPath)x86\signtool.exe</SignToolPath>
71-
</PropertyGroup>
72-
</Target>
73-
<Target Name="SignBundleEngine" DependsOnTargets="UsesSignTool">
74-
<Exec
75-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;@(SignBundleEngine)&quot;"/>
61+
62+
<Target Name="SignBundleEngine" DependsOnTargets="SignToolArgs">
63+
<Exec Command="$(SignToolArgs) &quot;@(SignBundleEngine)&quot;" EnvironmentVariables="@(SignToolEnvironmentVariable)" />
7664
</Target>
77-
<Target Name="SignBundle" DependsOnTargets="UsesSignTool">
78-
<Exec
79-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;@(SignBundle)&quot;"/>
65+
<Target Name="SignBundle" DependsOnTargets="SignToolArgs">
66+
<Exec Command="$(SignToolArgs) &quot;@(SignBundle)&quot;" EnvironmentVariables="@(SignToolEnvironmentVariable)" />
8067
</Target>
8168
<!--
8269
To modify your build process, add your task inside one of the targets below and uncomment it.

windows/src/main/wix/Bundle/Cyberduck.Bundle.wixproj

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -70,48 +70,43 @@
7070
</HarvestDirectory>
7171
</ItemGroup>
7272

73+
<PropertyGroup>
74+
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
75+
</PropertyGroup>
76+
<Import Project="$(VCTargetsPath)Microsoft.Cpp.MSVC.Toolset.Common.props" />
77+
7378
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
7479
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
80+
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.targets', '$(MSBuildThisFileDirectory)'))" />
7581
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
7682
<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/" />
7783
</Target>
7884

79-
<Target Name="UsesFrameworkSdk">
80-
<GetFrameworkSdkPath>
81-
<Output TaskParameter="Path" PropertyName="FrameworkSdkPath" />
82-
</GetFrameworkSdkPath>
83-
<PropertyGroup>
84-
<WinSDK>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0@InstallationFolder)</WinSDK>
85-
<WinSDK Condition="('@(WinSDK)'=='')">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots@KitsRoot10)</WinSDK>
86-
<Win10SDKBinPath>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)bin\</Win10SDKBinPath>
87-
<Win10SDKVersion>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion).0\</Win10SDKVersion>
88-
<Win10SDKVerBinPath>$(Win10SDKBinPath)$(Win10SDKVersion)</Win10SDKVerBinPath>
89-
</PropertyGroup>
90-
</Target>
91-
<Target Name="UsesSignTool" DependsOnTargets="UsesFrameworkSdk">
92-
<PropertyGroup>
93-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(FrameworkSdkPath)bin\signtool.exe')">$(FrameworkSdkPath)bin\signtool.exe</SignToolPath>
94-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(WinSDK)\bin\x86\signtool.exe')">$(WinSDK)\bin\x86\signtool.exe</SignToolPath>
95-
<SignToolPath Condition="('@(SignToolPath)'=='') and Exists('$(Win10SDKVerBinPath)x86\signtool.exe')">$(Win10SDKVerBinPath)x86\signtool.exe</SignToolPath>
96-
</PropertyGroup>
97-
</Target>
98-
<Target Name="SignMsi" DependsOnTargets="UsesSignTool">
99-
<Exec
100-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;%(SignMsi.FullPath)&quot;"/>
85+
<Target Name="SignMsi" DependsOnTargets="SignToolArgs">
86+
<Exec Command="$(SignToolArgs) &quot;%(SignMsi.FullPath)&quot;" EnvironmentVariables="@(SignToolEnvironmentVariable)" />
10187
</Target>
10288
<!--
10389
To modify your build process, add your task inside one of the targets below and uncomment it.
10490
Other similar extension points exist, see Wix.targets.
10591
-->
106-
<Target Name="SignDLLs" Condition=" '$(SignOutput)' == 'true' " DependsOnTargets="UsesSignTool" AfterTargets="Compile" BeforeTargets="Link">
92+
<Target Name="_CollectPayload" Returns="@(SignPayload)">
10793
<ItemGroup>
108-
<Assemblies Include="$(TargetBuildDir)*.dll" />
109-
<Assemblies Include="$(TargetBuildDir)*.exe" />
110-
<Assemblies Remove="$(TargetBuildDir)netstandard.dll" />
111-
<Assemblies Remove="$(TargetBuildDir)System*.dll" />
94+
<SignPayload Include="$(TargetBuildDir)*.dll;$(TargetBuildDir)*.exe" />
11295
</ItemGroup>
96+
</Target>
97+
<Target Name="CollectSignPayload" DependsOnTargets="_CollectPayload;SignToolArgs" Outputs="%(SignPayload.Identity)" Returns="@(SignPayload)">
98+
<Exec Command="%22$(SignToolExecutable)%22 verify /q /pa %22%(SignPayload.Identity)%22"
99+
EnvironmentVariables="@(SignToolEnvironmentVariable)"
100+
IgnoreStandardErrorWarningFormat="true"
101+
IgnoreExitCode="true">
102+
<Output TaskParameter="ExitCode" PropertyName="PayloadSigned" />
103+
</Exec>
113104

114-
<Exec
115-
Command="&quot;$(SignToolPath)&quot; sign /d &quot;Cyberduck&quot; /fd sha256 /tr http://timestamp.entrust.net/TSS/RFC3161sha2TS /td sha256 /a /sm /n &quot;iterate GmbH&quot; &quot;%(Assemblies.Identity)&quot;"/>
105+
<ItemGroup>
106+
<SignPayload Remove="%(SignPayload.Identity)" Condition="'$(PayloadSigned)'=='0'" />
107+
</ItemGroup>
108+
</Target>
109+
<Target Name="SignPayload" Condition=" '$(SignOutput)' == 'true' " DependsOnTargets="CollectSignPayload;SignToolArgs" AfterTargets="Compile" BeforeTargets="Link">
110+
<Exec Command="$(SignToolArgs) @(SignPayload->'%22%(Identity)%22', ' ')" EnvironmentVariables="@(SignToolEnvironmentVariable)" Condition="'@(SignPayload)'!=''" />
116111
</Target>
117112
</Project>

0 commit comments

Comments
 (0)