mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
<#
 | 
						|
.Synopsis
 | 
						|
    Compiles and signs an APPX package
 | 
						|
.Description
 | 
						|
    Given the file listing, ensures all the contents are signed
 | 
						|
    and builds and signs the final package.
 | 
						|
.Parameter mapfile
 | 
						|
    The location on disk of the text mapping file.
 | 
						|
.Parameter msix
 | 
						|
    The path and name to store the APPX/MSIX.
 | 
						|
.Parameter sign
 | 
						|
    When set, signs the APPX/MSIX. Packages to be published to
 | 
						|
    the store should not be signed.
 | 
						|
.Parameter description
 | 
						|
    Description to embed in the signature (optional).
 | 
						|
.Parameter certname
 | 
						|
    The name of the certificate to sign with (optional).
 | 
						|
.Parameter certsha1
 | 
						|
    The SHA1 hash of the certificate to sign with (optional).
 | 
						|
#>
 | 
						|
param(
 | 
						|
    [Parameter(Mandatory=$true)][string]$layout,
 | 
						|
    [Parameter(Mandatory=$true)][string]$msix,
 | 
						|
    [switch]$sign,
 | 
						|
    [string]$description,
 | 
						|
    [string]$certname,
 | 
						|
    [string]$certsha1,
 | 
						|
    [string]$certfile
 | 
						|
)
 | 
						|
 | 
						|
$tools = $script:MyInvocation.MyCommand.Path | Split-Path -parent;
 | 
						|
Import-Module $tools\sdktools.psm1 -WarningAction SilentlyContinue -Force
 | 
						|
 | 
						|
Set-Alias makeappx (Find-Tool "makeappx.exe") -Scope Script
 | 
						|
Set-Alias makepri (Find-Tool "makepri.exe") -Scope Script
 | 
						|
 | 
						|
$msixdir = Split-Path $msix -Parent
 | 
						|
if ($msixdir) {
 | 
						|
    $msixdir = (mkdir -Force $msixdir).FullName
 | 
						|
} else {
 | 
						|
    $msixdir = Get-Location
 | 
						|
}
 | 
						|
$msix = Join-Path $msixdir (Split-Path $msix -Leaf)
 | 
						|
 | 
						|
pushd $layout
 | 
						|
try {
 | 
						|
    if (Test-Path resources.pri) {
 | 
						|
        del resources.pri
 | 
						|
    }
 | 
						|
    $name = ([xml](gc AppxManifest.xml)).Package.Identity.Name
 | 
						|
    makepri new /pr . /mn AppxManifest.xml /in $name /cf _resources.xml /of _resources.pri /mf appx /o
 | 
						|
    if (-not $? -or -not (Test-Path _resources.map.txt)) {
 | 
						|
        throw "makepri step failed"
 | 
						|
    }
 | 
						|
    $lines = gc _resources.map.txt
 | 
						|
    $lines | ?{ -not ($_ -match '"_resources[\w\.]+?"') } | Out-File _resources.map.txt -Encoding utf8
 | 
						|
    makeappx pack /f _resources.map.txt /m AppxManifest.xml /o /p $msix
 | 
						|
    if (-not $?) {
 | 
						|
        throw "makeappx step failed"
 | 
						|
    }
 | 
						|
} finally {
 | 
						|
    popd
 | 
						|
}
 | 
						|
 | 
						|
if ($sign) {
 | 
						|
    Sign-File -certname $certname -certsha1 $certsha1 -certfile $certfile -description $description -files $msix
 | 
						|
 | 
						|
    if (-not $?) {
 | 
						|
        throw "Package signing failed"
 | 
						|
    }
 | 
						|
}
 |