blob: 92eef83365ec124f84bc24afe689f9baff5e0d69 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# Zagan-Bet installer for Windows.
#
# Asks the site which build is newest, verifies its SHA-256, installs it for
# the current user and adds a Start-menu shortcut. Point it at a staging site
# with -Site http://127.0.0.1:8899; add -NoPause for automation.
#
# Run it with:
# powershell -ExecutionPolicy Bypass -File .\install.ps1
param(
[string]$Site = "https://zagan.2137697.xyz",
[switch]$NoPause
)
$ErrorActionPreference = "Stop"
function Finish([int]$Code) {
if (-not $NoPause) {
Read-Host "Press Enter to close" | Out-Null
}
exit $Code
}
function Stop-Install([string]$Message) {
Write-Host "install: $Message" -ForegroundColor Red
Finish 1
}
try {
$latest = (Invoke-WebRequest -Uri "$Site/latest.php" -UseBasicParsing).Content
} catch {
Stop-Install "could not read $Site/latest.php: $_"
}
$line = ($latest -split "`r?`n") |
Where-Object { $_ -match '^gui windows x86_64 ' } |
Select-Object -First 1
if (-not $line) {
Stop-Install "no Windows build is published yet"
}
$parts = $line.Trim() -split '\s+'
if ($parts.Count -lt 6) {
Stop-Install "the latest-build file is malformed"
}
$Version = $parts[3]
$Binary = $parts[4]
$Sha256 = $parts[5]
$Url = "$Site/bin/gui/$Binary"
Write-Host "Newest Zagan-Bet is $Version."
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$candidates = @(
(Join-Path $here $Binary),
(Join-Path (Get-Location) $Binary),
(Join-Path $env:USERPROFILE "Downloads\$Binary")
)
$sourceFile = $null
foreach ($candidate in $candidates) {
if (Test-Path -LiteralPath $candidate) {
$sourceFile = $candidate
break
}
}
$temporary = $null
if (-not $sourceFile) {
$temporary = Join-Path ([System.IO.Path]::GetTempPath()) $Binary
Write-Host "Downloading $Binary..."
try {
Invoke-WebRequest -Uri $Url -OutFile $temporary -UseBasicParsing
} catch {
Stop-Install "download failed: $_"
}
$sourceFile = $temporary
}
try {
$actual = (Get-FileHash -LiteralPath $sourceFile -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $Sha256.ToLowerInvariant()) {
Stop-Install "checksum mismatch: expected $Sha256, got $actual"
}
$installDir = Join-Path $env:LOCALAPPDATA "Programs\Zagan-Bet"
New-Item -ItemType Directory -Force -Path $installDir | Out-Null
$target = Join-Path $installDir "zagan-bet-gui.exe"
Copy-Item -LiteralPath $sourceFile -Destination $target -Force
$startMenu = Join-Path $env:APPDATA "Microsoft\Windows\Start Menu\Programs"
New-Item -ItemType Directory -Force -Path $startMenu | Out-Null
$shortcutPath = Join-Path $startMenu "Zagan-Bet.lnk"
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = $target
$shortcut.WorkingDirectory = $installDir
$shortcut.IconLocation = "$target,0"
$shortcut.Description = "Slots, roulette, blackjack and crash"
$shortcut.Save()
Write-Host "Installed Zagan-Bet $Version to $target"
Write-Host "A Start-menu shortcut was created."
} finally {
if ($temporary -and (Test-Path -LiteralPath $temporary)) {
Remove-Item -LiteralPath $temporary -Force
}
}
Finish 0
|