Skip to content

Commit

Permalink
LRZ++V1.5.2 | Added Updater, Tweaked Install Script, Fixed incorrectl…
Browse files Browse the repository at this point in the history
…y handled dvar,
  • Loading branch information
TheFantasticLoki committed Jun 15, 2022
1 parent 9c01643 commit 2987b1c
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 18 deletions.
17 changes: 0 additions & 17 deletions Install Guide.txt

This file was deleted.

118 changes: 118 additions & 0 deletions Update_LRZ.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
param (
[Parameter(HelpMessage = "Do not prompt for any user input")]
[switch]$Silent = $True,

[Parameter(HelpMessage = "Clean unneeded files listed in _delete.txt after update")]
[switch]$Clean = $False,

[Parameter(HelpMessage = "Only update releases in the verified stream")]
[switch]$Verified = $False,

[Parameter(HelpMessage = "Directory to install to")]
[ValidateScript({
if (-Not($_ | Test-Path))
{
throw "File or folder does not exist"
} return $true
})]
[System.IO.FileInfo]$Directory
)

Write-Output "======================================="
Write-Output " LRZ++ Updater v1 "
Write-Output " by TheFantasticLoki "
Write-Output "======================================="

$stopwatch = [system.diagnostics.stopwatch]::StartNew()
$repoName = "TheFantasticLoki/LokisRagnarokZombies"
$assetPattern = "LokisRagnarok*.zip"

if ($Verified)
{
$releasesUri = "https://api.github.com/repos/$repoName/releases/latest"
}

else
{
$releasesUri = "https://api.github.com/repos/$repoName/releases"
}

Write-Output "Retrieving latest version info..."

$releaseInfo = (Invoke-WebRequest $releasesUri | ConvertFrom-Json) | Select -First 1
$asset = $releaseInfo.assets | Where-Object name -like $assetPattern | Select -First 1
$downloadUri = $asset.browser_download_url
$filename = Split-Path $downloadUri -leaf

Write-Output "The latest version is $( $releaseInfo.tag_name ) released $( $releaseInfo.published_at )"

if (!$Silent)
{
$stopwatch.Stop()
Write-Warning "All LRZ++ files will be updated. Are you sure you want to continue?" -WarningAction Inquire
$stopwatch.Start()
}

Write-Output "Downloading update. This might take a moment..."

$fileDownload = Invoke-WebRequest -Uri $downloadUri
if ($fileDownload.StatusDescription -ne "OK")
{
throw "Could not update LRZ++. ($fileDownload.StatusDescription)"
}

$remoteHash = $fileDownload.Headers['Content-MD5']
$decodedHash = [System.BitConverter]::ToString([System.Convert]::FromBase64String($remoteHash)).replace('-', '')
$directoryPath = Get-Location
$fullPath = "$directoryPath\$filename"
$outputFile = [System.IO.File]::Open($fullPath, 2)
$stream = [System.IO.BinaryWriter]::new($outputFile)

if ($Directory)
{
$outputDir = $Directory
}

else
{
$outputDir = Get-Location
}

try
{
$stream.Write($fileDownload.Content)
}
finally
{
$stream.Dispose()
$outputFile.Dispose()
}

$localHash = (Get-FileHash -Path $fullPath -Algorithm MD5).Hash

if ($localHash -ne $decodedHash)
{
throw "Failed to update. File hashes don't match!"
}

Write-Output "Extracting $filename to $outputDir"
Expand-Archive -Path $fullPath -DestinationPath $outputDir -Force

if ($Clean)
{
Write-Output "Running post-update clean..."
$DeleteList = Get-Content -Path ./_delete.txt
ForEach ($file in $DeleteList)
{
Write-Output "Deleting $file"
Remove-Item -Path $file
}
}

Write-Output "Removing temporary files..."
Remove-Item -Force $fullPath

$stopwatch.Stop()
$executionTime = [math]::Round($stopwatch.Elapsed.TotalSeconds, 0)

Write-Output "Update completed successfully in $executionTime seconds!"
11 changes: 10 additions & 1 deletion install_LRZ.bat
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
@echo off

setlocal
:PROMPT
SET /P UPDATELRZ=Would you like to update LRZ++ before Installing (Y/[N])?
IF /I "%UPDATELRZ%" NEQ "Y" GOTO END

powershell -ExecutionPolicy ByPass -command ". '%CD%\Update_LRZ.ps1'

:END
xcopy /i "%CD%\" "%localappdata%\Plutonium\storage\t6\mods\Lokis-Ragnarok" /E /y

xcopy /i "%CD%\menus\privategamelobby_project.lua" "%localappdata%\Plutonium\storage\t6\ui_mp\t6\menus" /y

powershell -command "& '%CD%\installscripts\updatechecklrzexists.ps1'"
xcopy /i "%CD%\scripts" "%localappdata%\Plutonium\storage\t6\scripts" /E /y

xcopy /i "%CD%\images" "%localappdata%\Plutonium\storage\t6\images" /E /y
Expand All @@ -17,5 +26,5 @@ xcopy /i "%CD%\shortcuts\Uninstall LRZ++.lnk" "%appdata%\Microsoft\Windows\Start
@echo Loki's Ragnarok ++ Install Completed!

timeout 3

endlocal
end
13 changes: 13 additions & 0 deletions installscripts/updatechecklrzexists.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
if(Test-Path -Path $env:LOCALAPPDATA\Plutonium\storage\t6\scripts\zm\Loki-RagnarokV*.gsc)
{
Write-Output "Found Existing Version of Loki's Ragnarok Zombies, Removing..."
Remove-Item $env:LOCALAPPDATA\Plutonium\storage\t6\scripts\zm\Loki-RagnarokV*.gsc
Write-Output "Removed Old Version of Loki's Ragnarok Zombies"
}

if(Test-Path -Path $env:LOCALAPPDATA\Plutonium\storage\t6\scripts\mp\Loki-RagnarokMPV*.gsc)
{
Write-Output "Found Existing Version of Loki's Ragnarok Multiplayer, Removing..."
Remove-Item $env:LOCALAPPDATA\Plutonium\storage\t6\scripts\mp\Loki-RagnarokMPV*.gsc
Write-Output "Removed Old Version of Loki's Ragnarok Multiplayer"
}
Binary file removed scripts/zm/Loki-RagnarokV1.5.1.gsc
Binary file not shown.
Binary file modified scripts/zm/Loki-RagnarokV1.5.1.gsc.bak
Binary file not shown.
Binary file added scripts/zm/Loki-RagnarokV1.5.2.gsc
Binary file not shown.

0 comments on commit 2987b1c

Please sign in to comment.