OSDN Git Service

Issue #1340: Request for updating code: a new language(ABAP) in "syntax highlighting...
[winmerge-jp/winmerge-jp.git] / ShellExtension / CreateWinMergeContextMenuPackage.ps1
1 $vspath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
2 $instid = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property instanceId
3 Import-Module "$vspath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
4 Enter-VsDevShell $instid -DevCmdArguments -arch=x64
5
6 cd $(Split-Path $MyInvocation.MyCommand.Path -Parent)
7
8 if (($env:SIGNBAT_PATH -eq "") -or !(Test-Path publisher.txt) -or (($args[0] -ne $null) -and ($args[0].ToLower() -eq "selfsignedpackage"))) {
9   $publisher = "CN=winmergedev"
10 } else {
11   $publisher = Get-Content publisher.txt
12   $certList = dir Cert:\CurrentUser\My | where { $_.Subject -eq $publisher }
13   if ($certList.Length -eq 0) {
14     $publisher = "CN=winmergedev"
15   }
16 }
17
18 Get-Content WinMergePkg\AppxManifest.xml.in | % { $_ -replace '\${Publisher}',$publisher } | Set-Content WinMergePkg\AppxManifest.xml
19 if (Test-Path WinMergeContextMenuPackage.msix) { del WinMergeContextMenuPackage.msix }
20 MakeAppx.exe pack /d WinMergePkg /p WinMergeContextMenuPackage.msix /nv
21
22 if ($publisher -eq "CN=winmergedev") {
23   $certList = dir Cert:\CurrentUser\My | where { $_.Subject -eq $publisher  }
24   if ($certList.Length -eq 0)  {
25     $cert = New-SelfSignedCertificate -Type Custom -Subject $publisher -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
26   } else {
27     $cert = $certList[0]
28   }
29
30   $certPassword = ConvertTo-SecureString -String "test" -Force -AsPlainText
31   Export-PfxCertificate -Cert $cert -FilePath selfsigncert.pfx -Password $certPassword
32   Export-Certificate -Type CERT -Cert $cert -FilePath selfsigncert.cer
33
34   SignTool.exe sign /fd SHA256 /a /f selfsigncert.pfx /p test /v WinMergeContextMenuPackage.msix
35 } else {
36   & $env:SIGNBAT_PATH WinMergeContextMenuPackage.msix
37 }
38
39 foreach($i in @("", "X64\", "ARM64\")) {
40   foreach($j in @("Debug", "Release")) {
41     if (!(Test-Path ..\Build\$i$j)) { mkdir ..\Build\$i$j }
42     copy WinMergeContextMenuPackage.msix ..\Build\$i$j
43   }
44 }