feat(installer) Windows powershell installer and uninstaller (#10)
* feat(installer) Windows powershell installer and uninstaller * style(installer): Fix uninstaller file header * feat(installer): Branch selection & Sanity checks
This commit is contained in:
parent
2fcd075f81
commit
66098b181a
2 changed files with 163 additions and 0 deletions
90
install.ps1
Normal file
90
install.ps1
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
# Vencord Windows Installer
|
||||||
|
|
||||||
|
$patcher = "$PWD\dist\patcher.js"
|
||||||
|
$patcher_safe = $patcher -replace '\\', '\\'
|
||||||
|
|
||||||
|
$APP_PATCH = @"
|
||||||
|
require("$patcher_safe");
|
||||||
|
require("../app.asar");
|
||||||
|
"@
|
||||||
|
|
||||||
|
$PACKAGE_JSON = @"
|
||||||
|
{
|
||||||
|
"main": "index.js",
|
||||||
|
"name": "discord"
|
||||||
|
}
|
||||||
|
"@
|
||||||
|
|
||||||
|
$branch_paths = Get-ChildItem -Directory -Path $env:LOCALAPPDATA |
|
||||||
|
Select-String -Pattern "Discord\w*" -AllMatches |
|
||||||
|
Select-String -Pattern "DiscordGames" -NotMatch # Ignore DiscordGames folder
|
||||||
|
|
||||||
|
$branches = @()
|
||||||
|
|
||||||
|
foreach ($branch in $branch_paths) {
|
||||||
|
$branch = $branch.Line.Split("\")[-1]
|
||||||
|
|
||||||
|
if ($branch -eq "Discord") {
|
||||||
|
$branch = "Discord Stable"
|
||||||
|
} else {
|
||||||
|
$branch = $branch.Replace("Discord", "Discord ")
|
||||||
|
}
|
||||||
|
|
||||||
|
$branches = $branches + $branch
|
||||||
|
}
|
||||||
|
|
||||||
|
$branch_count = $branches.Count
|
||||||
|
|
||||||
|
Write-Output "Found $branch_count Branches"
|
||||||
|
Write-Output "====================================="
|
||||||
|
Write-Output "===== Select a Branch to patch ======"
|
||||||
|
|
||||||
|
$i = 0
|
||||||
|
foreach ($branch in $branches) {
|
||||||
|
Write-Output "=== $i. $branch"
|
||||||
|
$i++
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "====================================="
|
||||||
|
$pos = Read-Host "Enter a number"
|
||||||
|
|
||||||
|
if ($null -eq $branches[$pos]) {
|
||||||
|
Write-Output "Invalid branch selection"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
$branch = $branches.Get($pos)
|
||||||
|
$discord_root = $branch_paths.Get($pos)
|
||||||
|
|
||||||
|
Write-Output "`nPatching $branch"
|
||||||
|
|
||||||
|
$app_folders = Get-ChildItem -Directory -Path $discord_root |
|
||||||
|
Select-String -Pattern "app-"
|
||||||
|
|
||||||
|
foreach ($folder in $app_folders)
|
||||||
|
{
|
||||||
|
$version = [regex]::match($folder, 'app-([\d\.]+)').Groups[1].Value
|
||||||
|
Write-Output "Patching Version $version"
|
||||||
|
|
||||||
|
$resources = "$folder\resources"
|
||||||
|
if (-not(Test-Path -Path "$resources")) {
|
||||||
|
Write-Error "Resources folder does not exist. Outdated version?`n"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (-not(Test-Path -Path "$resources\app.asar")) {
|
||||||
|
Write-Error "Failed to find app.asar in $folder`n"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
$app = "$resources\app"
|
||||||
|
if (Test-Path -Path $app) {
|
||||||
|
Write-Error "Are you already patched? App folder already exists at $resources`n"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
$null = New-Item -Path $app -ItemType Directory
|
||||||
|
$null = Tee-Object -InputObject $APP_PATCH -FilePath "$app\index.js"
|
||||||
|
$null = Tee-Object -InputObject $PACKAGE_JSON -FilePath "$app\package.json"
|
||||||
|
|
||||||
|
Write-Output "Patched $branch (version $version) successfully"
|
||||||
|
}
|
73
uninstall.ps1
Normal file
73
uninstall.ps1
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
# Vencord Uninstaller
|
||||||
|
|
||||||
|
$branch_paths = Get-ChildItem -Directory -Path $env:LOCALAPPDATA |
|
||||||
|
Select-String -Pattern "Discord\w*" -AllMatches |
|
||||||
|
Select-String -Pattern "DiscordGames" -NotMatch # Ignore DiscordGames folder
|
||||||
|
|
||||||
|
$branches = @()
|
||||||
|
|
||||||
|
foreach ($branch in $branch_paths) {
|
||||||
|
$branch = $branch.Line.Split("\")[-1]
|
||||||
|
|
||||||
|
if ($branch -eq "Discord") {
|
||||||
|
$branch = "Discord Stable"
|
||||||
|
} else {
|
||||||
|
$branch = $branch.Replace("Discord", "Discord ")
|
||||||
|
}
|
||||||
|
|
||||||
|
$branches = $branches + $branch
|
||||||
|
}
|
||||||
|
|
||||||
|
$branch_count = $branches.Count
|
||||||
|
|
||||||
|
Write-Output "Found $branch_count Branches"
|
||||||
|
Write-Output "====================================="
|
||||||
|
Write-Output "===== Select a Branch to unpatch ======"
|
||||||
|
|
||||||
|
$i = 0
|
||||||
|
foreach ($branch in $branches) {
|
||||||
|
Write-Output "=== $i. $branch"
|
||||||
|
$i++
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "====================================="
|
||||||
|
$pos = Read-Host "Enter a number"
|
||||||
|
|
||||||
|
if ($null -eq $branches[$pos]) {
|
||||||
|
Write-Output "Invalid branch selection"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
$branch = $branches.Get($pos)
|
||||||
|
$discord_root = $branch_paths.Get($pos)
|
||||||
|
|
||||||
|
Write-Output "`nUnpatch $branch"
|
||||||
|
|
||||||
|
$app_folders = Get-ChildItem -Directory -Path $discord_root |
|
||||||
|
Select-String -Pattern "app-"
|
||||||
|
|
||||||
|
foreach ($folder in $app_folders)
|
||||||
|
{
|
||||||
|
$version = [regex]::match($folder, 'app-([\d\.]+)').Groups[1].Value
|
||||||
|
Write-Output "Unpatching $branch Version $version"
|
||||||
|
|
||||||
|
$resources = "$folder\resources"
|
||||||
|
if (-not(Test-Path -Path "$resources")) {
|
||||||
|
Write-Output "Resources folder doesn't exist... Possibly an outdated copy and can be ignored.`n"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (-not(Test-Path -Path "$resources\app")) {
|
||||||
|
Write-Output "App folder doesn't exist... Already unpatched?`n"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-Item -Path "$folder\resources\app" -Recurse -Force -Confirm:$false
|
||||||
|
|
||||||
|
if (Test-Path "$folder\resources\app")
|
||||||
|
{
|
||||||
|
Write-Error "Failed to delete $folder\resources\app"
|
||||||
|
} else {
|
||||||
|
Write-Output "Successfully unpatched $branch (version $version)"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue