diff --git a/images/win/scripts/Installers/Install-Firefox.ps1 b/images/win/scripts/Installers/Install-Firefox.ps1 index 560c7148..eb6cea70 100644 --- a/images/win/scripts/Installers/Install-Firefox.ps1 +++ b/images/win/scripts/Installers/Install-Firefox.ps1 @@ -8,13 +8,59 @@ Import-Module -Name ImageHelpers -Force $temp_install_dir = 'C:\Windows\Installer' New-Item -Path $temp_install_dir -ItemType Directory -Force -Install-EXE -Url "https://seleniumwebdrivers.blob.core.windows.net/knownfirefoxversion/FirefoxSetup.exe" -Name "FirefoxSetup.exe" -ArgumentList "-ms" +$versionsJson = Invoke-RestMethod "https://product-details.mozilla.org/1.0/firefox_versions.json" +$latestVersion = $versionsJson.LATEST_FIREFOX_VERSION +Write-Host "Firefox latest version: $latestVersion" -$path = '{0}\Program Files\Mozilla Firefox\' -f $env:SystemDrive; -New-Item -path $path -Name 'mozilla.cfg' -Value '// +# url for latest version of firefox +$urlLatestVersion = "https://download.mozilla.org/?product=firefox-${latestVersion}&os=win64&lang=en-US" +Install-EXE -Url $urlLatestVersion -Name "Firefox Setup $latestVersion.exe" -ArgumentList ("/silent", "/install") + +# Disable autoupdate +$firefoxDirectoryPath = Join-Path $env:ProgramFiles "Mozilla Firefox" +New-Item -path $firefoxDirectoryPath -Name 'mozilla.cfg' -Value '// pref("browser.shell.checkDefaultBrowser", false); pref("app.update.enabled", false);' -ItemType file -force -$path = '{0}\Program Files\Mozilla Firefox\defaults\pref\' -f $env:SystemDrive; -New-Item -path $path -Name 'local-settings.js' -Value 'pref("general.config.obscure_value", 0); +$firefoxPreferencesFolder = Join-Path $firefoxDirectoryPath "defaults\pref" +New-Item -path $firefoxPreferencesFolder -Name 'local-settings.js' -Value 'pref("general.config.obscure_value", 0); pref("general.config.filename", "mozilla.cfg");' -ItemType file -force + +Write-Host "Install Firefox WebDriver" + +$geckodriverJson = Invoke-RestMethod "https://api.github.com/repos/mozilla/geckodriver/releases/latest" +$geckodriverWindowsAsset = $geckodriverJson.assets | Where-Object { $_.name -Match "win64" } | Select-Object -First 1 + +Write-Host "Geckodriver version: $($geckodriverJson.tag_name)" + + +$DriversZipFile = $geckodriverWindowsAsset.name +Write-Host "Selenium drivers download and install..." + +$FirefoxDriverPath = Join-Path $env:SystemDrive "SeleniumWebDrivers\GeckoDriver" + +# Install Firefox Web Driver +Write-Host "FireFox driver download...." +if (-not (Test-Path -Path $FireFoxDriverPath)) { + New-Item -Path $FireFoxDriverPath -ItemType "directory" +} + +$DestFile = Join-Path $FireFoxDriverPath $DriversZipFile +$FireFoxDriverDownloadUrl = $geckodriverWindowsAsset.browser_download_url +try{ + Invoke-WebRequest -Uri $FireFoxDriverDownloadUrl -OutFile $DestFile +} catch { + Write-Error "[!] Failed to download $DriversZipFile" + exit 1 +} + +Write-Host "FireFox driver install...." +Expand-Archive -Path $DestFile -DestinationPath $FireFoxDriverPath -Force +Remove-Item -Path $DestFile -Force + + +Write-Host "Setting the environment variables" +Add-MachinePathItem -PathItem $FireFoxDriverPath +setx GeckoWebDriver "$FirefoxDriverPath" /M; + +exit 0 \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 b/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 index c6e1b3c2..6170a83e 100644 --- a/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 +++ b/images/win/scripts/Installers/Install-SeleniumWebDrivers.ps1 @@ -10,18 +10,31 @@ try { Invoke-WebRequest -UseBasicParsing -Uri "https://seleniumwebdrivers.blob.core.windows.net/seleniumwebdrivers/${DriversZipFile}" -OutFile $DriversZipFile; } catch { - Write-Error "[!] Failed to download $DriverZipFile"; + Write-Error "[!] Failed to download $DriversZipFile"; exit 1; } -Expand-Archive -Path $DriversZipFile -DestinationPath $DestinationPath -Force; +$TempSeleniumDir = Join-Path $Env:TEMP "SeleniumWebDrivers" +Expand-Archive -Path $DriversZipFile -DestinationPath $Env:TEMP -Force; Remove-Item $DriversZipFile; -$ChromeDriverPath = "${DestinationPath}SeleniumWebDrivers\ChromeDriver"; -Write-Host "Chrome driver path: [$ChromeDriverPath]"; -Remove-Item -Path "$ChromeDriverPath\*" -Force; +$SeleniumWebDriverPath = Join-Path $DestinationPath "SeleniumWebDrivers" +$IEDriverPathTemp = Join-Path $TempSeleniumDir 'IEDriver' + +if (-not (Test-Path -Path $SeleniumWebDriverPath)) { + New-Item -Path $SeleniumWebDriverPath -ItemType "directory" +} + +Move-Item -Path "$IEDriverPathTemp" -Destination $SeleniumWebDriverPath + # Reinstall Chrome Web Driver +$ChromeDriverPath = "${DestinationPath}SeleniumWebDrivers\ChromeDriver"; + +if (-not (Test-Path -Path $ChromeDriverPath)) { + New-Item -Path $ChromeDriverPath -ItemType "directory" +} + $RegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" $ChromePath = (Get-ItemProperty "$RegistryPath\chrome.exe").'(default)'; [version]$ChromeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ChromePath).ProductVersion; @@ -71,7 +84,6 @@ Remove-Item -Path $DestFile -Force Write-Host "Setting the environment variables" setx IEWebDriver "C:\SeleniumWebDrivers\IEDriver" /M; -setx GeckoWebDriver "C:\SeleniumWebDrivers\GeckoDriver" /M; setx ChromeWebDriver "$ChromeDriverPath" /M; setx EdgeWebDriver "$EdgeDriverPath" /M; diff --git a/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 b/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 index 9a68c72b..e4979bd7 100644 --- a/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 +++ b/images/win/scripts/Installers/Validate-SeleniumWebDrivers.ps1 @@ -4,9 +4,13 @@ ################################################################################ $IEDriverPath = $env:IEWebDriver +Write-Host "IEDriverPath: $IEDriverPath" $GeckoDriverPath = $env:GeckoWebDriver +Write-Host "GeckoDriverPath: $GeckoDriverPath" $ChromeDriverPath = $env:ChromeWebDriver +Write-Host "ChromeDriverPath: $ChromeDriverPath" $EdgeDriverPath = $env:EdgeWebDriver +Write-Host "EdgeDriverPath: $EdgeDriverPath" if ( ($IEDriverPath -like "C:\SeleniumWebDrivers\IEDriver") -and