summaryrefslogtreecommitdiffstats
path: root/Tools/msi/sdktools.psm1
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2018-12-07 05:09:20 (GMT)
committerGitHub <noreply@github.com>2018-12-07 05:09:20 (GMT)
commit468a15aaf9206448a744fc5eab3fc21f51966aad (patch)
tree75c8f2aae7835ae7ca718ef8660a4c0899837bd3 /Tools/msi/sdktools.psm1
parentc9566b8c454120e3d0ddb5ab970f262a6cd80077 (diff)
downloadcpython-468a15aaf9206448a744fc5eab3fc21f51966aad.zip
cpython-468a15aaf9206448a744fc5eab3fc21f51966aad.tar.gz
cpython-468a15aaf9206448a744fc5eab3fc21f51966aad.tar.bz2
bpo-34977: Add Windows App Store package (GH-10245)
Diffstat (limited to 'Tools/msi/sdktools.psm1')
-rw-r--r--Tools/msi/sdktools.psm143
1 files changed, 43 insertions, 0 deletions
diff --git a/Tools/msi/sdktools.psm1 b/Tools/msi/sdktools.psm1
new file mode 100644
index 0000000..81a74d3
--- /dev/null
+++ b/Tools/msi/sdktools.psm1
@@ -0,0 +1,43 @@
+function Find-Tool {
+ param([string]$toolname)
+
+ $kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10
+ $tool = (gci -r "$kitroot\Bin\*\x64\$toolname" | sort FullName -Desc | select -First 1)
+ if (-not $tool) {
+ throw "$toolname is not available"
+ }
+ Write-Host "Found $toolname at $($tool.FullName)"
+ return $tool.FullName
+}
+
+Set-Alias SignTool (Find-Tool "signtool.exe") -Scope Script
+
+function Sign-File {
+ param([string]$certname, [string]$certsha1, [string]$certfile, [string]$description, [string[]]$files)
+
+ if (-not $description) {
+ $description = $env:SigningDescription;
+ if (-not $description) {
+ $description = "Python";
+ }
+ }
+ if (-not $certname) {
+ $certname = $env:SigningCertificate;
+ }
+ if (-not $certfile) {
+ $certfile = $env:SigningCertificateFile;
+ }
+
+ foreach ($a in $files) {
+ if ($certsha1) {
+ SignTool sign /sha1 $certsha1 /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
+ } elseif ($certname) {
+ SignTool sign /n $certname /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
+ } elseif ($certfile) {
+ SignTool sign /f $certfile /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
+ } else {
+ SignTool sign /a /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
+ }
+ }
+}
+