29 lines
1.9 KiB
PowerShell
29 lines
1.9 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Erzeugt den Upload-Schlüssel (Keystore) für die Veröffentlichung im Play Store.
|
|
|
|
.DESCRIPTION
|
|
Der Keystore wird außerhalb des Projekts abgelegt (Standard: %USERPROFILE%\deskhub-keys\deskhub-release.jks).
|
|
Passwort wird abgefragt und nie angezeigt oder gespeichert. DIESE DATEI UND DAS PASSWORT SICHERN (mindestens zwei Orte):
|
|
Ohne sie kann die App später nicht mehr aktualisiert werden. Niemals einchecken oder weitergeben.
|
|
#>
|
|
param([string]$StoreFile = (Join-Path $env:USERPROFILE 'deskhub-keys\deskhub-release.jks'), [string]$Alias = 'deskhub')
|
|
$ErrorActionPreference = 'Stop'
|
|
if (Test-Path -LiteralPath $StoreFile) { throw "Keystore existiert bereits: $StoreFile (nicht überschrieben)." }
|
|
New-Item -ItemType Directory -Force (Split-Path $StoreFile) | Out-Null
|
|
$s1 = Read-Host 'Neues Keystore-Passwort (mindestens 12 Zeichen)' -AsSecureString
|
|
$s2 = Read-Host 'Passwort wiederholen' -AsSecureString
|
|
$p1 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($s1))
|
|
$p2 = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($s2))
|
|
if ($p1 -ne $p2) { throw 'Die Passwörter stimmen nicht überein.' }
|
|
if ($p1.Length -lt 12) { throw 'Das Passwort ist zu kurz (mindestens 12 Zeichen).' }
|
|
$dname = Read-Host 'Name für das Zertifikat (z. B. CN=M_Viper, O=DeskHub, C=DE)'
|
|
if ([string]::IsNullOrWhiteSpace($dname)) { $dname = 'CN=DeskHub, O=DeskHub, C=DE' }
|
|
$env:DH_KS_PW = $p1
|
|
try {
|
|
keytool -genkeypair -v -keystore $StoreFile -alias $Alias -keyalg RSA -keysize 4096 -validity 10000 `
|
|
-storepass:env DH_KS_PW -keypass:env DH_KS_PW -dname $dname
|
|
if ($LASTEXITCODE -ne 0) { throw 'keytool ist fehlgeschlagen.' }
|
|
} finally { Remove-Item Env:\DH_KS_PW -ErrorAction SilentlyContinue }
|
|
Write-Host "`nFertig: $StoreFile (Alias $Alias). SICHERN: Datei + Passwort. Danach: .\build-release.ps1"
|