83 lines
3.0 KiB
PowerShell
83 lines
3.0 KiB
PowerShell
# Script to set ImageGlass as default for specified file types
|
|
$fileTypes = @(".png", ".jpg", ".jpeg", ".webp", ".gif", ".tiff", ".bmp", ".heif", ".heic")
|
|
$setUserFtaPath = "C:\Scripts\Software\setuserfta.exe"
|
|
$imageGlassPath = "C:\Program Files\ImageGlass\igcmd.exe"
|
|
$imageGlassRegistryPath = "HKCU:\Software\ImageGlass\Capabilities\FileAssociations"
|
|
|
|
# Function to check and set default app for a file type
|
|
function Set-DefaultAppIfNeeded {
|
|
param(
|
|
[string]$fileType
|
|
)
|
|
try {
|
|
# Get the current default app for the file type
|
|
$currentDefault = (Get-ItemProperty "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\$fileType\UserChoice" -ErrorAction SilentlyContinue).ProgId
|
|
|
|
# Check if ImageGlass is not the default
|
|
if ($currentDefault -ne "ImageGlass") {
|
|
Write-Host "Setting ImageGlass as default for $fileType"
|
|
|
|
# Ensure setuserfta.exe path exists
|
|
if (-not (Test-Path $setUserFtaPath)) {
|
|
Write-Error "setuserfta.exe not found at $setUserFtaPath"
|
|
return
|
|
}
|
|
|
|
# Run setuserfta.exe to set ImageGlass as default
|
|
Start-Process $setUserFtaPath -ArgumentList "`"$fileType`" ImageGlass" -Wait -NoNewWindow
|
|
}
|
|
else {
|
|
Write-Host "ImageGlass is already the default for $fileType"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Error "Error processing $fileType`: $_"
|
|
}
|
|
}
|
|
|
|
# Check if ImageGlass command for setting defaults is needed
|
|
function Test-ImageGlassFileAssociations {
|
|
# Check if the registry path exists
|
|
if (-not (Test-Path $imageGlassRegistryPath)) {
|
|
Write-Host "ImageGlass registry path does not exist."
|
|
return $true
|
|
}
|
|
|
|
# Check each file type
|
|
$missingAssociations = $false
|
|
foreach ($type in $fileTypes) {
|
|
|
|
try {
|
|
# Try to get the property value directly
|
|
$associationValue = Get-ItemPropertyValue -Path $imageGlassRegistryPath -Name $type -ErrorAction Stop
|
|
|
|
# If we get here and the value is null or empty, consider it missing
|
|
if ([string]::IsNullOrWhiteSpace($associationValue)) {
|
|
Write-Host "Empty association for $type"
|
|
$missingAssociations = $true
|
|
}
|
|
}
|
|
catch {
|
|
Write-Host "No association found for $type"
|
|
$missingAssociations = $true
|
|
}
|
|
}
|
|
|
|
return $missingAssociations
|
|
}
|
|
|
|
# Process each file type
|
|
foreach ($type in $fileTypes) {
|
|
Set-DefaultAppIfNeeded -fileType $type
|
|
}
|
|
|
|
# Check if global defaults need to be set
|
|
if (Test-ImageGlassFileAssociations) {
|
|
Write-Host "Setting global defaults for ImageGlass"
|
|
Start-Process "$imageGlassPath" -ArgumentList "set-default-viewer .png;.jpg;.jpeg;.webp;.gif;.tiff;.bmp;.heif;.heic" -Wait -NoNewWindow
|
|
}
|
|
else {
|
|
Write-Host "ImageGlass file associations are already completely configured."
|
|
}
|
|
|
|
Write-Host "File type default app check completed." |