@ -21,6 +21,9 @@ global InstalledChromeVersion
; Chrome Related Functions
;------------------------------------------------
DownloadLatestChromium(){
Message = Checking Variables for Downloading Newest Chrome
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
if(ChromeFilepath = "")
ChromeFilepath := GetInstalledChromeFilepath()
@ -40,7 +43,7 @@ DownloadLatestChromium(){
ChromeExtractedDirectory = %A_ScriptDir%\Lib\chrome-win64
ChromeDriverMoverEXEFilepath = %A_ScriptDir%\Lib\Chromedriver-Mover.exe
ChromeDriverMoverURL = https://git.freedomainplaylists.com/yuriy/Chromedriver-Mover/releases/download/1.1/Chromedriver-Mover.exe
ChromeDriverMoverURL = https://freedomain.dev/attachments/b7b608b6-379a-42bb-a7c4-23fd67a05bb3
ChromeDriverProgramFilesExeFilepath = C:\Program Files\SeleniumBasic\chromedriver.exe
@ -90,9 +93,9 @@ DownloadLatestChromium(){
; close any open instances of Chromium
SetTitleMatchMode, 2 ; substring
; SetTitleMatchMode, 2 ; substring
/*
if(WinExist(" - Chromium")){
Message = Trying to close any open Chromium Windows
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
@ -111,158 +114,210 @@ DownloadLatestChromium(){
MsgBox 0x10,, %Message%
return
}
*/
; make sure all instances of chrome are closed
Loop, {
ChromeOpen := WinExist("ahk_exe chrome.exe")
if(ChromeOpen) {
Message = Chrome is Open. Asking user to close instances before continuing.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; msgbox
MsgBox 0x41, Chrome is Open, Please close all instances of Chrome and then click OK to continue with replacing Chrome with the newest version.
FileGetTime, ChromeDriverExeOldCreationTime, %ChromeDriverProgramFilesExeFilepath%, C
IfMsgBox OK, {
} Else IfMsgBox Cancel, {
ToolTip
return
}
}
else,
break
}
Message = Downloading Chromedriver v%ChromeStableLatestVersion% to:`n%ChromeDriverDownloadZipFilepath%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
UrlDownloadToFile, %chromedriverDLURL64%, %ChromeDriverDownloadZipFilepath%
Message = Downloading Chromium v%ChromeStableLatestVersion% to:`n%ChromeDownloadZipFilepath%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
UrlDownloadToFile, %chromeDLURL64%, %ChromeDownloadZipFilepath%
; make sure all instances of chromedriver.exe are closed
Message = Checking and killing any instances of the chromedriver.exe process
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; delete the pre-existing chrome-win64 directory
Message = Deleting Old Chromium Directory
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Loop, 5 {
FileRemoveDir, %ChromeExtractedDirectory%, 1
if(FileExist(ChromeExtractedDirectory)){
Message = Failed to delete the old Chromium. `nPlease manually delete the following directory and then run the Chrome Update again.`n`n %ChromeExtractedDirectory%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar")
Process, Exist, chromedriver.exe
ChromedriverExists := ErrorLevel
MsgBox 0x10,, %Message%
ToolTip
return
}
if(ChromedriverExists){
Message = Chromedriver Exists on check number %A_Index%
SaveOrPostProgress(Message:=Message,PostType:="ErrorLoggingTextFile,DiscordErrorLogging")
; Double check that .zip files exist
ChromeDriverZipExists := FileExist(ChromeDriverDownloadZipFilepath)
if(!ChromeDriverZipExists){
Message = Download of chromedriver failed for some reason. chromedriver.zip not found.
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
MsgBox 0x10,, %Message%
Return
}
Process, Close, chromedriver.exe
sleep, 5000 ; wait 5 seconds before checking again
continue
}
else,
break
ChromeZipExists := FileExist(ChromeDownloadZipFilepath)
if(!ChromeZipExists){
Message = Download of chrome failed for some reason. chrome.zip not found.
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
MsgBox 0x10,, %Message%
Return
}
Message = Chrome Update Failed. Unable to kill background chromedriver.exe process
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
FileGetTime, ChromeDriverExeOldCreationTime, %ChromeDriverProgramFilesExeFilepath%, C
Message = Extracting Chromedriver v%ChromeStableLatestVersion% Zip file
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Unzip(ChromeDriverDownloadZipFilepath, ChromeDriverDownloadFilepath)
Message = Extracting Chromium v%ChromeStableLatestVersion% Zip file
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Unzip(ChromeDownloadZipFilepath, ChromeExtractedDirectory)
Message = Downloading Chromedriver v%ChromeStableLatestVersion% `nFrom: %chromedriverDLURL64%`nTo: %ChromeDriverDownloadZipFilepath%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
UrlDownloadToFile, %chromedriverDLURL64%, %ChromeDriverDownloadZipFilepath%
Message = Downloading Chromium v%ChromeStableLatestVersion% `nfrom: %chromeDLURL64% to:`n%ChromeDownloadZipFilepath%`n(This might take 1-2 minutes)
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
UrlDownloadToFile, %chromeDLURL64%, %ChromeDownloadZipFilepath%
; Check if the Copy-ChromeDriver-To-Program-Files.exe file exists
; @todo, remove later. this is temporary to fix chromedriver-mover being broken and needing to be replaced
FileDelete, %ChromeDriverMoverEXEFilepath%
; delete the pre-existing chrome-win64 directory
Message = Deleting Old Chromium Directory
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Message = Checking Chromedriver-Mover.exe exists
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
if(!FileExist(ChromeDriverMoverEXEFilepath)){
Message = Chromedriver-Mover not found. Downloading from Gitea
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
UrlDownloadToFile, %ChromeDriverMoverURL%, %ChromeDriverMoverEXEFilepath%
if(ErrorLevel){
Message = Failed to download the Copy-ChromeDriver-To-Program-Files.exe executable. `n`n%ManualMoveChromedriverMessage%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
FileRemoveDir, %ChromeExtractedDirectory%, 1
if(FileExist(ChromeExtractedDirectory)){
Message = Failed to delete the old Chromium. `nPlease manually delete the following directory and then run the Chrome Update again.`n`n %ChromeExtractedDirectory%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar")
MsgBox 0x10,, %Message%
ToolTip
R eturn
r eturn
}
}
if(!FileExist(ChromeDriverMoverEXEFilepath)){
Message = ChromeDriver-Mover not found after downloading. `nPossibly triggered and deleted by Antivirus?`n`n%ManualMoveChromedriverMessage%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging,msgbox")
; Double check that .zip files exist
ChromeDriverZipExists := FileExist(ChromeDriverDownloadZipFilepath)
if(!ChromeDriverZipExists){
Message = Download of chromedriver failed for some reason. chromedriver.zip not found.
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
MsgBox 0x10,, %Message%
Return
}
ToolTip
return
}
ChromeZipExists := FileExist(ChromeDownloadZipFilepath)
if(!ChromeZipExists){
Message = Download of chrome failed for some reason. chrome.zip not found.
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
MsgBox 0x10,, %Message%
Return
}
Message = Starting up Chromedriver-Mover
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; Msgbox % "ChromeDriverMoverEXEFilepath: " ChromeDriverMoverEXEFilepath
; Msgbox % "ChromeDriverDownloadFilepath: " ChromeDriverDownloadFilepath
try, Run "%ChromeDriverMoverEXEFilepath%" "%ChromeDriverDownloadFilepath%"
if(ErrorLevel = "ERROR"){
Message = Failed to run Chromedriver-Mover.exe program to automatically copy the chromedriver to Program Files.`n%ManualMoveChromedriverMessage%
MsgBox 0x40,, %Message%
}
Message = Extracting Chromedriver v%ChromeStableLatestVersion% Zip file
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Unzip(ChromeDriverDownloadZipFilepath, ChromeDriverDownloadFilepath)
Message = Extracting Chromium v%ChromeStableLatestVersion% Zip file
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Unzip(ChromeDownloadZipFilepath, ChromeExtractedDirectory)
Message = Waiting 30 seconds for new Chromedriver to get moved to C:\Program Files\SeleniumBasic\
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Loop, 30 {
sleep, 1000
FileGetTime, ChromeDriverExeCurrentCreationTime, %ChromeDriverProgramFilesExeFilepath%, C
; Check if the Copy-ChromeDriver-To-Program-Files.exe file exists
; Msgbox % "ChromeDriverExeOldCreationTime: " ChromeDriverExeOldCreationTime
; Msgbox % "ChromeDriverExeCurrentCreationTime: " ChromeDriverExeCurrentCreationTime
; @todo, remove later. this is temporary to fix chromedriver-mover being broken and needing to be replaced
; FileDelete, %ChromeDriverMoverEXEFilepath%
if(ErrorLevel){
Message = Checking Chromedriver-Mover.exe exists
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Message = chromedriver.exe not found in %ChromeDriverProgramFilesExeFilepath%. `nWaiting for new version to get copied over.
if(!FileExist(ChromeDriverMoverEXEFilepath)){
Message = Chromedriver-Mover not found. Downloading from Gitea
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; sleep, 1000
Continue
UrlDownloadToFile, %ChromeDriverMoverURL%, %ChromeDriverMoverEXEFilepath%
if(ErrorLevel){
Message = Failed to download the Copy-ChromeDriver-To-Program-Files.exe executable. `n`n%ManualMoveChromedriverMessage%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
ToolTip
Return
}
}
if(ChromeDriverExeCurrentCreationTime != ChromeDriverExeOldCreationTime and ChromeDriverExeCurrentCreationTime != ""){
break
if(!FileExist(ChromeDriverMoverEXEFilepath)){
Message = ChromeDriver-Mover not found after downloading. `nPossibly triggered and deleted by Antivirus?`n`n%ManualMoveChromedriverMessage%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging,msgbox")
ToolTip
return
}
; sleep, 1000
Continue
}
Message = Starting up Chromedriver-Mover
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; Msgbox % "ChromeDriverMoverEXEFilepath: " ChromeDriverMoverEXEFilepath
; Msgbox % "ChromeDriverDownloadFilepath: " ChromeDriverDownloadFilepath
try, Run "%ChromeDriverMoverEXEFilepath%" "%ChromeDriverDownloadFilepath%"
if(ErrorLevel = "ERROR"){
Message = Failed to run Chromedriver-Mover.exe program to automatically copy the chromedriver to Program Files.`n%ManualMoveChromedriverMessage%
MsgBox 0x40,, %Message%
}
Message = Waiting 30 seconds for new Chromedriver to get moved to C:\Program Files\SeleniumBasic\
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Loop, 30 {
sleep, 1000
FileGetTime, ChromeDriverExeCurrentCreationTime, %ChromeDriverProgramFilesExeFilepath%, C
; Msgbox % "ChromeDriverExeOldCreationTime: " ChromeDriverExeOldCreationTime
; Msgbox % "ChromeDriverExeCurrentCreationTime: " ChromeDriverExeCurrentCreationTime
if(ErrorLevel){
Message = chromedriver.exe not found in %ChromeDriverProgramFilesExeFilepath%. `nWaiting for new version to get copied over.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; sleep, 1000
Continue
}
if(ChromeDriverExeCurrentCreationTime != ChromeDriverExeOldCreationTime and ChromeDriverExeCurrentCreationTime != ""){
break
}
; sleep, 1000
Continue
}
if(!FileExist(ChromeDriverProgramFilesExeFilepath)){
Message = Failed to Automatically move chromedriver.exe`n%ManualMoveChromedriverMessage%
if(!FileExist(ChromeDriverProgramFilesExeFilepath)){
Message = Failed to Automatically move chromedriver.exe`n%ManualMoveChromedriverMessage%
MsgBox 0x40,, %Message%
ToolTip
return
}
Message = Chromium and Chromedriver.exe were updated successfully.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
MsgBox 0x40,, %Message%
ChromeFilepath := ; clear out chromefilepath variable in case the path changed
ToolTip
return
}
Message = Chromium and Chromedriver.exe were updated successfully.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
MsgBox 0x40,, %Message%
ToolTip
return
}
/*
*/
CheckForChromeUpdates(ChromeFilepath := ""){
@ -284,7 +339,6 @@ CheckForChromeUpdates(ChromeFilepath := ""){
GetInstalledChromeFilepath(){
; ChromeFilepath is global variable
if(ChromeFilepath = ""){
ChromePortableFilepath = %A_ScriptDir%\Lib\chrome-win64\chrome.exe
@ -297,19 +351,14 @@ GetInstalledChromeFilepath(){
if(FileExist(ChromePortableFilepath))
ChromeFilepath := ChromePortableFilepath
Message = Using Chromium Portable for Upload
SaveOrPostProgress(Message:=Message,PostType:="ErrorLoggingTextFile,DiscordErrorLogging")
; Message = Using Chromium Portable for Upload
; SaveOrPostProgress(Message:=Message,PostType:="ErrorLoggingTextFile,DiscordErrorLogging")
}
else {
MsgBox 0x10, Chromium Portable not Found, Chromium Portable not found. `nPlease make sure it's located at one of the following paths and then try again.`n`n%ChromePortableFilepath% `nOR`n%ChromePortableFilepath2%
Message = Chrome.exe not found in \Lib\
SaveOrPostProgress(Message,PostType:=",ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
; Leave this in for now, but i don't think we will be going to using the system Chrome in the future.
; if(FileExist("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"))
; ChromeFilepath = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
; if(FileExist("C:\Program Files\Google\Chrome\Application\chrome.exe"))
; ChromeFilepath = C:\Program Files\Google\Chrome\Application\chrome.exe
MsgBox 0x10, Chrome Not Found, Chrome for Testing not found.`nIf this is your first time running on this computer, please click the "Chrome Up-To-Date" button to download the latest chrome binaries.
}
}
ToolTip
@ -327,7 +376,7 @@ GetInstalledChromeVersion(){
if(InStr(InstalledChromeVersion, "`r"))
InstalledChromeVersion := StrReplace(InstalledChromeVersion, "`r") ; replace any newline characters that powershell returns
return InstalledChromeVersion
}
@ -336,7 +385,7 @@ GetLatestChromeStableVersion(){
; https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints
json_str := urldownloadtovar("https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json")
; converts json data variable into object
parsed := JSON.Load(json_str)
@ -357,7 +406,7 @@ GetDownloadURLOfChromeAndDriver(InstalledChromeVersion){
; https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints
json_str := urldownloadtovar("https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json")
; requires #include of json.ahk in parent script
parsed := JSON.Load(json_str)
@ -380,7 +429,7 @@ GetDownloadURLOfChromeAndDriver(InstalledChromeVersion){
; loop through the platforms to get download URL for Chrome
loop % parsed.versions[VersionIndex].downloads.chrome.count() {
if(parsed.versions[VersionIndex].downloads.chrome[A_Index].platform = "win64")
chromeDLURL64 := parsed.versions[VersionIndex].downloads.chrome[A_Index].url
}
@ -388,7 +437,7 @@ GetDownloadURLOfChromeAndDriver(InstalledChromeVersion){
; loop through the platforms to get download URL for Chromedriver
loop % parsed.versions[VersionIndex].downloads.chromedriver.count() {
if(parsed.versions[VersionIndex].downloads.chromedriver[A_Index].platform = "win64")
chromedriverDLURL64 := parsed.versions[VersionIndex].downloads.chromedriver[A_Index].url
}