Skip to content

[How To] [C#] Dynamically download Edge Webdriver #40

@miksch123

Description

@miksch123

Hello,
This is not an issue but rather a way to dynamically download the correct Edge webdriver depending on what edge version is currently installed on your system.
I hope some of you might find this helpful.
The same can be donw for Mac OS and Linux. I just wanted to leave a bit of an inspiration.

public void DownloadEdgeDriver()
        {
            FileVersionInfo info = null;
            string version = null;
            string drivername = null;
            if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                if(!File.Exists(tmpfolder + "edgeversion.txt"))
                    File.Create(tmpfolder  + "edgeversion.txt").Close();

                if(Environment.Is64BitOperatingSystem is true)
                {
                    info = FileVersionInfo.GetVersionInfo(@"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe");
                    drivername = "edgedriver_win64.zip";
                }
                else
                {
                    info = FileVersionInfo.GetVersionInfo(@"C:\Program Files\Microsoft\Edge\Application\msedge.exe");
                    drivername = "edgedriver_win32.zip";
                }
                
                version = info.FileVersion;
                string current = File.ReadAllText(tmpfolder  + "edgeversion.txt").ToString();
                if (version != current)
                {
                    if(File.Exists(driverfolder + "\\*.zip"))
                        File.Delete(driverfolder  + "\\*.zip");
                    if(File.Exists(driverfolder  + "\\msedgedriver.exe"))
                        File.Delete(driverfolder  + "\\msedgedriver.exe");            
                    
                    using (var client = new WebClient()) 
                    {
                        client.DownloadFile("https://msedgedriver.azureedge.net/" + version + "/" + drivername, driverfolder  + "\\" + drivername);
                    }
                    if(File.Exists(driverfolder   + "\\msedgedriver.exe"))
                        File.Delete(driverfolder   + "\\msedgedriver.exe");
                    if(Directory.Exists(driverfolder   + "\\Driver_Notes"))
                        Directory.Delete(driverfolder   + "\\Driver_Notes", true);
                    ZipFile.ExtractToDirectory(driverfolder   + "\\" + drivername, Configuration.DefaultBinDirWin);
                    File.WriteAllText(tmpfolder + "edgeversion.txt", version);
                }
            }
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions