-
Notifications
You must be signed in to change notification settings - Fork 4
/
logi-options-plus-mini.ps1
74 lines (65 loc) · 2.77 KB
/
logi-options-plus-mini.ps1
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
# Script to install latest Logi Options+ on Windows
# Variables
$appName = "Logi Options+"
$installerName = "logioptionsplus_installer.exe"
$downloadUrl = "https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.exe"
$downloadPath = "$env:TEMP\$installerName"
$configPath = "$env:LOCALAPPDATA\LogiOptionsPlus"
$backupPath = "$env:LOCALAPPDATA\LogiOptionsPlus_bak"
Write-Host ""
Write-Host "##############################################################"
Write-Host "$(Get-Date) | Starting install of $appName"
Write-Host "##############################################################"
Write-Host ""
# Download the installer
Write-Host "$(Get-Date) | Downloading $appName Installer..."
Invoke-WebRequest -Uri $downloadUrl -OutFile $downloadPath
# Check if download was successful
if (Test-Path $downloadPath) {
Write-Host "$(Get-Date) | Download completed successfully."
} else {
Write-Host "$(Get-Date) | Failed to download $appName installer."
exit 1
}
# Backup existing configuration
if (Test-Path $configPath) {
Write-Host "$(Get-Date) | Backing up existing configuration..."
if (Test-Path $backupPath) {
Remove-Item $backupPath -Recurse -Force
}
Copy-Item $configPath $backupPath -Recurse
Write-Host "$(Get-Date) | Configuration backed up to $backupPath"
}
# Uninstall existing version
Write-Host "$(Get-Date) | Uninstalling existing version of $appName..."
Start-Process -FilePath $downloadPath -ArgumentList "/uninstall" -Wait -Verb RunAs
# Restore configuration backup
if (Test-Path $backupPath) {
Write-Host "$(Get-Date) | Restoring configuration from backup..."
if (Test-Path $configPath) {
Remove-Item $configPath -Recurse -Force
}
Move-Item -Path $backupPath -Destination $configPath
Write-Host "$(Get-Date) | Configuration restored from $backupPath"
}
# Change the following arguments to 'Yes' if you want to install the module.
# Install new version
Write-Host "$(Get-Date) | Installing $appName..."
$installArgs = "/analytics", "No", "/flow", "No", "/sso", "No", "/update", "No", "/dfu", "No", "/backlight", "No"
$process = Start-Process -FilePath $downloadPath -ArgumentList $installArgs -PassThru -Verb RunAs
$Handle = $process.Handle
$process.WaitForExit()
if ($process.ExitCode -eq 0) {
Write-Host "$(Get-Date) | $appName installed successfully."
# Clean up
Remove-Item $downloadPath -Force
Write-Host "$(Get-Date) | Cleaned up temporary files."
Write-Host "Installation completed, press any key to exit..."
[void][System.Console]::ReadKey($true)
exit 0
} else {
Write-Host "$(Get-Date) | Failed to install $appName. Exit code: $($process.ExitCode)"
Write-Host "Installation completed, press any key to exit..."
[void][System.Console]::ReadKey($true)
exit 1
}