From 7cce575241ab42dee346bec66fdd0047cea72573 Mon Sep 17 00:00:00 2001 From: R4SAS Date: Fri, 20 Dec 2019 13:03:48 +0300 Subject: [PATCH] switch yggdrasil package to new installer (dev) Signed-off-by: R4SAS --- yggdrasil/logo/yggdrasil-512.png | Bin 0 -> 32620 bytes yggdrasil/logo/yggdrasil.svg | 119 ++++++++++++++++++ yggdrasil/tools/chocolateyinstall.ps1 | 71 ++++------- yggdrasil/tools/chocolateyuninstall.ps1 | 43 +++++-- ...{service-install.bat => service-start.bat} | 10 -- ...service-uninstall.bat => service-stop.bat} | 1 - 6 files changed, 173 insertions(+), 71 deletions(-) create mode 100644 yggdrasil/logo/yggdrasil-512.png create mode 100644 yggdrasil/logo/yggdrasil.svg rename yggdrasil/tools/{service-install.bat => service-start.bat} (69%) rename yggdrasil/tools/{service-uninstall.bat => service-stop.bat} (97%) diff --git a/yggdrasil/logo/yggdrasil-512.png b/yggdrasil/logo/yggdrasil-512.png new file mode 100644 index 0000000000000000000000000000000000000000..506006cd75c70e60943ed455d8858b0bfbaaa73d GIT binary patch literal 32620 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 Pz@JMO47Bq!@ge^Uwu9R- literal 0 HcmV?d00001 diff --git a/yggdrasil/logo/yggdrasil.svg b/yggdrasil/logo/yggdrasil.svg new file mode 100644 index 0000000..f1889b8 --- /dev/null +++ b/yggdrasil/logo/yggdrasil.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/yggdrasil/tools/chocolateyinstall.ps1 b/yggdrasil/tools/chocolateyinstall.ps1 index f57a5fe..f7d9581 100644 --- a/yggdrasil/tools/chocolateyinstall.ps1 +++ b/yggdrasil/tools/chocolateyinstall.ps1 @@ -2,76 +2,51 @@ $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" $appDir = "$([Environment]::GetFolderPath('ProgramFiles'))\Yggdrasil" +$confDir = "$([Environment]::GetFolderPath('CommonApplicationData'))\Yggdrasil" $startMenuDir = "$([Environment]::GetFolderPath('CommonStartMenu'))\Programs\Yggdrasil" -$url = 'https://2203-115685026-gh.circle-artifacts.com/0/yggdrasil-0.3.11-windows-i386.exe' -$url64 = 'https://2203-115685026-gh.circle-artifacts.com/0/yggdrasil-0.3.11-windows-amd64.exe' -$ctlUrl = 'https://2203-115685026-gh.circle-artifacts.com/0/yggdrasil-0.3.11-yggdrasilctl-windows-i386.exe' -$ctlUrl64 = 'https://2203-115685026-gh.circle-artifacts.com/0/yggdrasil-0.3.11-yggdrasilctl-windows-amd64.exe' +$url = 'https://ci.appveyor.com/api/buildjobs/bmhigwngjgybqh50/artifacts/yggdrasil-develop-0.3.12-0060-x86.msi' +$url64 = 'https://ci.appveyor.com/api/buildjobs/bmhigwngjgybqh50/artifacts/yggdrasil-develop-0.3.12-0060-x64.msi' +$checksum = '7c7faeac9bb60efe4ce996ceade9c94fda3a5e1dcd37fa8836794420e43b8e62' +$checksum64 = 'bfd5dccc5faa4789616014c29f1add3eaa9a5a112eef6543f0dae9dae9a8c2a2' $packageArgs = @{ - packageName = 'yggdrasil' + packageName = $env:ChocolateyPackageName + fileType = 'msi' + url = $url url64bit = $url64 - fileFullPath = "$appDir\yggdrasil.exe" - checksum = '496239325ED34ADAEDE10A71D678BE6B4FA13273BAEE6A924D20EE5EC58B8C28' + checksum = $checksum checksumType = 'sha256' - checksum64 = 'BC89CDBA3E5FF4D455805990BEEC3C0D29A88751B1F1E01687A10F71F320E522' + checksum64 = $checksum64 checksumType64 = 'sha256' -} - -$ctlPackageArgs = @{ - packageName = 'yggdrasilctl' - url = $ctlurl - url64bit = $ctlurl64 - fileFullPath = "$appDir\yggdrasilctl.exe" - checksum = 'F21B510D95ED7463BAF493F3530A3C7B5A1B72DB0110A160433A8ECB4C7584B3' - checksumType = 'sha256' - checksum64 = 'FCD3859F8C8546D1A46EBB6EB1227173C1A4D3AB168A3821BEA6E91356A662B3' - checksumType64 = 'sha256' + softwareName = 'Yggdrasil Network*' + silentArgs = '/quiet' + validExitCodes = @(0) } -# Installing executables -if (-not (Test-Path -Path $appDir)) { - New-Item -Path $appDir -ItemType Directory +# Backup old configuration +if (Test-Path "$confDir\yggdrasil.conf" -PathType Leaf) { + $date = Get-Date -format "yyyyMMdd" + Write-Host "Backing up configuration file to yggdrasil.conf.$date" + Copy-Item $confDir\yggdrasil.conf -Destination $confDir\yggdrasil.conf.$date } -Get-ChocolateyWebFile @packageArgs -Get-ChocolateyWebFile @ctlPackageArgs +Install-ChocolateyPackage @packageArgs Install-BinFile "yggdrasil" "$appDir\yggdrasil.exe" Install-BinFile "yggdrasilctl" "$appDir\yggdrasilctl.exe" -# Generating new configuration, or updating existent -if (Test-Path "$appDir\yggdrasil.conf" -PathType Leaf) { - $date = Get-Date -format "yyyyMMdd" - Write-Host "Backing up configuration file to yggdrasil.conf.$date" - Copy-Item $appDir\yggdrasil.conf -Destination $appDir\yggdrasil.conf.$date - Write-Host "Normalizing and updating yggdrasil.conf" - $args = @( - "-useconffile","$appDir\yggdrasil.conf.$date", - "-normaliseconf" - ) - & "$appDir\yggdrasil.exe" $args > "$appDir\yggdrasil.conf" -} else { - Write-Host "Generating initial configuration file yggdrasil.conf" - Write-Host "Please familiarise yourself with this file before starting Yggdrasil" - $args = @( - "-genconf" - ) - & "$appDir\yggdrasil.exe" $args > "$appDir\yggdrasil.conf" -} - # Creating shortcuts in Start Menu if (-not (Test-Path -Path $startMenuDir)) { New-Item -Path $startMenuDir -ItemType Directory } -Install-ChocolateyShortcut -shortcutFilePath "$startMenuDir\Install service.lnk" ` - -targetPath "$toolsDir\service-install.bat" -workDirectory "$appDir" -description "Install yggdrasil service" -RunAsAdmin +Install-ChocolateyShortcut -shortcutFilePath "$startMenuDir\Start service.lnk" ` + -targetPath "$toolsDir\service-start.bat" -workDirectory "$appDir" -description "Start yggdrasil service" -RunAsAdmin Install-ChocolateyShortcut -shortcutFilePath "$startMenuDir\Restart service.lnk" ` -targetPath "$toolsDir\service-restart.bat" -workDirectory "$appDir" -description "Restart yggdrasil service" -RunAsAdmin -Install-ChocolateyShortcut -shortcutFilePath "$startMenuDir\Uninstall service.lnk" ` - -targetPath "$toolsDir\service-uninstall.bat" -workDirectory "$appDir" -description "Uninstall yggdrasil service" -RunAsAdmin +Install-ChocolateyShortcut -shortcutFilePath "$startMenuDir\Stop service.lnk" ` + -targetPath "$toolsDir\service-stop.bat" -workDirectory "$appDir" -description "Stop yggdrasil service" -RunAsAdmin diff --git a/yggdrasil/tools/chocolateyuninstall.ps1 b/yggdrasil/tools/chocolateyuninstall.ps1 index 1195697..7d96e16 100644 --- a/yggdrasil/tools/chocolateyuninstall.ps1 +++ b/yggdrasil/tools/chocolateyuninstall.ps1 @@ -1,23 +1,42 @@ $ErrorActionPreference = 'Stop'; # stop on all errors $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" -$appDir = "$([Environment]::GetFolderPath('ProgramFiles'))\Yggdrasil" +$confDir = "$([Environment]::GetFolderPath('CommonApplicationData'))\Yggdrasil" $startMenuDir = "$([Environment]::GetFolderPath('CommonStartMenu'))\Programs\Yggdrasil" +$softwareName = 'Yggdrasil Network*' + +# Remove package, it don't touch configs +Write-Host "We removing package, but doesn't touch your configs. You can still find them in '$confDir' directory" + +[array]$key = Get-UninstallRegistryKey -SoftwareName $softwareName + +if ($key.Count -eq 1) { + $file = "$($key.UninstallString)" + $silentArgs = "$($key.PSChildName) /quiet" + $file = '' + + $packageArgs = @{ + packageName = $env:ChocolateyPackageName + fileType = 'msi' + silentArgs = $silentArgs + validExitCodes = @(0) + file = $file + } + + Uninstall-ChocolateyPackage @packageArgs +} elseif ($key.Count -eq 0) { + Write-Warning "$packageName has already been uninstalled by other means." +} elseif ($key.Count -gt 1) { + Write-Warning "$($key.Count) matches found!" + Write-Warning "To prevent accidental data loss, no programs will be uninstalled." + Write-Warning "Please alert the package maintainer that the following keys were matched:" + $key | ForEach-Object { Write-Warning "- $($_.DisplayName)" } +} + # Remove shims Uninstall-BinFile "yggdrasil" Uninstall-BinFile "yggdrasilctl" # Remove shortcuts from Start Menu Remove-Item $startMenuDir -Recurse - -# Stop and remove service if it was installed -if (Get-WmiObject -Class Win32_Service -Filter "Name='Yggdrasil'") { - & sc stop "Yggdrasil" - & sc delete "Yggdrasil" -} - -# Remove binaries, but don't touch configs -Write-Host "We removing binaries, but doesn't touch your configs. You can still find them in '$appDir' directory" -Remove-Item "$appDir\yggdrasil.exe" -Remove-Item "$appDir\yggdrasilctl.exe" diff --git a/yggdrasil/tools/service-install.bat b/yggdrasil/tools/service-start.bat similarity index 69% rename from yggdrasil/tools/service-install.bat rename to yggdrasil/tools/service-start.bat index a307ffb..ecd78f9 100644 --- a/yggdrasil/tools/service-install.bat +++ b/yggdrasil/tools/service-start.bat @@ -18,17 +18,7 @@ echo. goto :end :admin -pushd "%ProgramFiles%\Yggdrasil" -sc stop "Yggdrasil" >NUL 2>&1 -sc delete "Yggdrasil" >NUL 2>&1 - -REM add delay before re-creation -timeout 1 /nobreak >NUL - -sc create "Yggdrasil" binPath= "\"%CD%\yggdrasil.exe\" -useconffile \"%CD%\yggdrasil.conf\"" start= "auto" -sc description "Yggdrasil" "An experiment in scalable routing as an encrypted IPv6 overlay network" sc start "Yggdrasil" -popd :end set /p =Press [Enter] to exit . . . diff --git a/yggdrasil/tools/service-uninstall.bat b/yggdrasil/tools/service-stop.bat similarity index 97% rename from yggdrasil/tools/service-uninstall.bat rename to yggdrasil/tools/service-stop.bat index 44350e5..39966bb 100644 --- a/yggdrasil/tools/service-uninstall.bat +++ b/yggdrasil/tools/service-stop.bat @@ -19,7 +19,6 @@ goto :end :admin sc stop "Yggdrasil" -sc delete "Yggdrasil" :end set /p =Press [Enter] to exit . . .