From 751cf2c48c03a877a7a05ae5f727ffed84a35574 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Thu, 20 Jul 2023 20:15:39 +0200 Subject: [PATCH] Set Firefox as the default browser --- scripts/Windows/Software/Firefox/Install.ps1 | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/scripts/Windows/Software/Firefox/Install.ps1 b/scripts/Windows/Software/Firefox/Install.ps1 index a29797aa..8a9e5737 100644 --- a/scripts/Windows/Software/Firefox/Install.ps1 +++ b/scripts/Windows/Software/Firefox/Install.ps1 @@ -3,6 +3,57 @@ function Install-Firefox { param([Context] $context) + + $tempDir = $context.GetTempDirectory(); + $configFile = "DefaultAssociations.xml"; + Push-Location $tempDir; + Write-Host "Installing Firefox"; choco install -y firefox; + + Write-Information "Making Firefox the default browser"; + DISM /Online "/Export-DefaultAppAssociations:DefaultAssociations.xml"; + + [xml]$defaultAssociations = [xml]::new(); + $defaultAssociations.PreserveWhitespace = $true; + $reader = [System.Xml.XmlReader]::Create("$drive\Autounattend.template.xml", $readerSettings); + $defaultAssociations.Load($reader); + + $extensions = @( + ".htm", + ".html", + ".mht", + ".mhtml", + ".svg", + ".xht", + ".xhtml" + ); + + $schemes = @( + "ftp", + "http", + "https" + ); + + foreach ($association in $defaultAssociations.SelectNodes("/DefaultAssociations/Association")) { + [string] $className = $null; + + if (($extensions + $schemes) -contains $association.Identifier) { + $association.ApplicationName = "Firefox"; + + if ($extensions -contains $association.Identifier) { + $className = "FirefoxHTML"; + } else { + $className = "FirefoxURL"; + } + + $association.ProgId = "$className-308046B0AF4A39CB" + } + } + + $defaultAssociations.Save($configFile); + DISM /Online "/Import-DefaultAppAssociations:$configFile"; + + Pop-Location; + Remove-Item -Recurse $tempDir; }