diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df091f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +Chromedriver-Mover.exe \ No newline at end of file diff --git a/Chromedriver-Mover.ahk b/Chromedriver-Mover.ahk new file mode 100644 index 0000000..dbbed5d --- /dev/null +++ b/Chromedriver-Mover.ahk @@ -0,0 +1,133 @@ +; ENVIRONMENT +;------------------------------------------------ +#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. +;#Warn ; Enable warnings to assist with detecting common errors. +;DetectHiddenWindows, On +#SingleInstance, Force +SendMode Input ; Recommended for new scripts due to its superior speed and reliability. +SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. +;SetKeyDelay, 500 +CoordMode, ToolTip, Screen +CoordMode, Mouse, Screen +; #NoTrayIcon + +; Notes/Extra Info/#Includes +;------------------------------------------------ +; #Include C:\Users\%A_Username%\Syncthing\Scripts\AutoHotKey\RadialMenu\My codes\My Global Variables.ahk + +if(InStr(A_ScriptFullPath, ".ahk")){ + try Menu, Tray, Icon, %A_ScriptDir%\Assets\icon.ico +} + +; Menu, Tray, Icon, C:\Users\%A_Username%\Syncthing\Git\Copy-ChromeDriver-To-Program-Files\Assets\icon.ico + +ChromeDriverTemporaryFilepath = %1% + +; Msgbox % "Passed in ChromeDriverTemporaryFilepath: " ChromeDriverTemporaryFilepath + +; msgbox +; VARIABLES +;------------------------------------------------ +SettingsFilepath = %A_ScriptDir%\ChromedriverMover.ini + +; Msgbox % "SettingsFilepath: " SettingsFilepath +if(ChromeDriverTemporaryFilepath) +IniWrite, %ChromeDriverTemporaryFilepath%, %SettingsFilepath%, Selenium, ChromeDriverTemporaryFilepath + + +; MAIN SCRIPT +;------------------------------------------------ +StartScriptAsAdmin() + +if(ChromeDriverTemporaryFilepath = "") +IniRead, ChromeDriverTemporaryFilepath, %SettingsFilepath%, Selenium, ChromeDriverTemporaryFilepath + + +ChromeDriverProgramFilesFilepath = C:\Program Files\SeleniumBasic\chromedriver.exe + + +if(FileExist(ChromeDriverProgramFilesFilepath)){ + + FileDelete, %ChromeDriverProgramFilesFilepath% + if(ErrorLevel){ + msgbox, failed to delete old chromedriver from: C:\Program Files\SeleniumBasic\chromedriver.exe. Please make sure all Selenium Connected instances of Chromium are closed and then try again or move the Chromedriver.exe file manually from:`n%ChromeDriverTemporaryFilepath% + } + +} + + +if(FileExist(ChromeDriverProgramFilesFilepath)){ + msgbox, failed to delete old chromedriver from: C:\Program Files\SeleniumBasic\chromedriver.exe. Please run this program as admin or move the chromedriver manually from:`n%ChromeDriverTemporaryFilepath% + ExitApp +} + +; msgbox, pause + +; Msgbox % "ChromeDriverTemporaryFilepath: " ChromeDriverTemporaryFilepath + +if(!InStr(ChromeDriverTemporaryFilepath, ".exe")){ ; parent directory passed in instead of exact filepath. Loop through directory contents and find the .exe file + + Loop, files, %ChromeDriverTemporaryFilepath%\*.*, DFR + { ; D = Directories, F = Files, R = Recursive + + SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt, + + if(FileNameWExt = "chromedriver.exe"){ + ChromeDriverTemporaryFilepath := A_LoopFileFullPath + break + } + } + +} + +if(!InStr(ChromeDriverTemporaryFilepath, ".exe")){ + msgbox, Failed to find chromedriver.exe to move. Please move the chromedriver manually. + ExitApp +} + + +FileCopy, %ChromeDriverTemporaryFilepath%, %ChromeDriverProgramFilesFilepath%, 1 +if(ErrorLevel){ + msgbox, unable to copy chromedriver.exe from: `n%ChromeDriverTemporaryFilepath%`nto:`n%ChromeDriverProgramFilesFilepath% + ExitApp +} + + +if(!FileExist(ChromeDriverProgramFilesFilepath)){ + msgbox, failed to move chromedriver to %ChromeDriverProgramFilesFilepath%. Please run this program as admin or move the chromedriver manually. + ExitApp +} + +; clear the settings file +IniWrite, %A_Tab%, %SettingsFilepath%, Selenium, ChromeDriverTemporaryFilepath + +ExitApp + + + +; Functions +;------------------------------------------------ + +StartScriptAsAdmin(){ + full_command_line := DllCall("GetCommandLine", "str") + + if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)")) { + try { + if A_IsCompiled + Run *RunAs "%A_ScriptFullPath%" /restart + else + Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%" + } + ExitApp + } + + if(!A_IsAdmin){ + Msgbox, failed to get admin to move chromedriver to program files + Return + } +} + + +; Misc +;------------------------------------------------ +; Escape::ExitApp \ No newline at end of file diff --git a/Chromedriver-Mover.ico b/Chromedriver-Mover.ico new file mode 100644 index 0000000..c841619 Binary files /dev/null and b/Chromedriver-Mover.ico differ