Deploy Firefox policies to all installs
This commit is contained in:
@@ -51,6 +51,16 @@ function Install-FirefoxEsr {
|
||||
}
|
||||
|
||||
function Get-FirefoxExecutablePath {
|
||||
$FirefoxPaths = Get-FirefoxExecutablePaths
|
||||
|
||||
if ($FirefoxPaths.Count -gt 0) {
|
||||
return $FirefoxPaths[0]
|
||||
}
|
||||
|
||||
return $null
|
||||
}
|
||||
|
||||
function Get-FirefoxExecutablePaths {
|
||||
$CandidatePaths = @()
|
||||
|
||||
$AppPath = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe" -ErrorAction SilentlyContinue
|
||||
@@ -75,16 +85,20 @@ function Get-FirefoxExecutablePath {
|
||||
|
||||
$CandidatePaths += @(
|
||||
"$env:ProgramFiles\Mozilla Firefox\firefox.exe",
|
||||
"$env:ProgramFiles\Mozilla Firefox ESR\firefox.exe",
|
||||
"${env:ProgramFiles(x86)}\Mozilla Firefox\firefox.exe"
|
||||
"${env:ProgramFiles(x86)}\Mozilla Firefox ESR\firefox.exe"
|
||||
)
|
||||
|
||||
$FirefoxPaths = @()
|
||||
|
||||
foreach ($Path in ($CandidatePaths | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } | Select-Object -Unique)) {
|
||||
if (Test-Path $Path) {
|
||||
return (Resolve-Path $Path).Path
|
||||
$FirefoxPaths += (Resolve-Path $Path).Path
|
||||
}
|
||||
}
|
||||
|
||||
return $null
|
||||
return @($FirefoxPaths | Select-Object -Unique)
|
||||
}
|
||||
|
||||
function Get-FirefoxAssociationProgIds {
|
||||
@@ -124,15 +138,7 @@ function Get-FirefoxAssociationProgIds {
|
||||
}
|
||||
}
|
||||
|
||||
function Set-FirefoxEnterprisePolicies {
|
||||
param(
|
||||
[string]$FirefoxExe
|
||||
)
|
||||
|
||||
$FirefoxDirectory = Split-Path -Parent $FirefoxExe
|
||||
$DistributionDirectory = Join-Path $FirefoxDirectory "distribution"
|
||||
$PoliciesPath = Join-Path $DistributionDirectory "policies.json"
|
||||
|
||||
function Get-FirefoxEnterprisePolicies {
|
||||
$Policies = [ordered]@{
|
||||
policies = [ordered]@{
|
||||
DontCheckDefaultBrowser = $true
|
||||
@@ -173,10 +179,29 @@ function Set-FirefoxEnterprisePolicies {
|
||||
}
|
||||
}
|
||||
|
||||
if ($PSCmdlet.ShouldProcess($PoliciesPath, "Write Firefox enterprise policies")) {
|
||||
New-Item -Path $DistributionDirectory -ItemType Directory -Force | Out-Null
|
||||
$Policies | ConvertTo-Json -Depth 12 | Set-Content -Path $PoliciesPath -Encoding UTF8
|
||||
Write-Host "Firefox enterprise policies written: $PoliciesPath" -ForegroundColor Green
|
||||
return $Policies
|
||||
}
|
||||
|
||||
function Set-FirefoxEnterprisePolicies {
|
||||
param(
|
||||
[string[]]$FirefoxExecutables
|
||||
)
|
||||
|
||||
$Policies = Get-FirefoxEnterprisePolicies
|
||||
$PoliciesJson = $Policies | ConvertTo-Json -Depth 12
|
||||
$Utf8NoBom = [System.Text.UTF8Encoding]::new($false)
|
||||
|
||||
foreach ($FirefoxExe in ($FirefoxExecutables | Select-Object -Unique)) {
|
||||
$FirefoxDirectory = Split-Path -Parent $FirefoxExe
|
||||
$DistributionDirectory = Join-Path $FirefoxDirectory "distribution"
|
||||
$PoliciesPath = Join-Path $DistributionDirectory "policies.json"
|
||||
|
||||
if ($PSCmdlet.ShouldProcess($PoliciesPath, "Write Firefox enterprise policies")) {
|
||||
New-Item -Path $DistributionDirectory -ItemType Directory -Force | Out-Null
|
||||
[System.IO.File]::WriteAllText($PoliciesPath, $PoliciesJson, $Utf8NoBom)
|
||||
Get-Content -Path $PoliciesPath -Raw | ConvertFrom-Json | Out-Null
|
||||
Write-Host "Firefox enterprise policies written: $PoliciesPath" -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,14 +253,15 @@ function Set-FirefoxDefaultAssociations {
|
||||
Install-FirefoxEsr -PackageId $FirefoxPackageId
|
||||
|
||||
$FirefoxExe = Get-FirefoxExecutablePath
|
||||
$FirefoxExecutables = Get-FirefoxExecutablePaths
|
||||
|
||||
if (-not $FirefoxExe) {
|
||||
if (-not $FirefoxExe -or $FirefoxExecutables.Count -eq 0) {
|
||||
Write-Error "Firefox was not found after installation. Check the winget package result and retry."
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "Firefox found: $FirefoxExe" -ForegroundColor Cyan
|
||||
Set-FirefoxEnterprisePolicies -FirefoxExe $FirefoxExe
|
||||
Set-FirefoxEnterprisePolicies -FirefoxExecutables $FirefoxExecutables
|
||||
Set-FirefoxDefaultAssociations -OutputPath $AssociationsPath
|
||||
|
||||
Write-Host ""
|
||||
|
||||
Reference in New Issue
Block a user