본문 바로가기

자료

[C#] 크롬드라이버 자동 업데이트

728x90

 

블로그 인기글

● 메이플스토리 신규 룬패치/자동해제 프로그램 [링크 이동]

● 메이플스토리 거짓말탐지기 알림 프로그램 [링크 이동]

C#에서 TensorFlow 사용하는법 [링크 이동]


Nuget 패키지에서 Ionic.Zip을 설치해야합니다.

  void ChromeDriverUpdater()
        {
            string chromeversion_txt_path = "./chromedriver_version.txt";
            if (!System.IO.File.Exists(chromeversion_txt_path))
            {
                using (StreamWriter sw = new StreamWriter(System.IO.File.Open(chromeversion_txt_path, FileMode.Create), Encoding.UTF8))
                {
                }
            }
 
            WebClient webClient = new WebClient();
            string install_version = System.IO.File.ReadAllText(chromeversion_txt_path);
            string chromedriver_version = webClient.DownloadString("https://chromedriver.storage.googleapis.com/LATEST_RELEASE");
            if (install_version != chromedriver_version)
            {
                DialogResult msgresult = MessageBox.Show("크롬 드라이버가 최신버전이 아닙니다.\n최신으로 업데이트 하시겠습니까?", "크롬 드라이버 업데이트", MessageBoxButtons.YesNo);
                if (msgresult == DialogResult.Yes)
                {
                    try
                    {
                        Console.WriteLine("크롬 드라이버를 다운로드 중 입니다.");
                        Console.WriteLine("잠시만 기다려 주세요.");
                        webClient.DownloadFile($"https://chromedriver.storage.googleapis.com/{chromedriver_version}/chromedriver_win32.zip", Application.StartupPath + @"\chromedriver_win32.zip");
                        System.IO.File.WriteAllText(chromeversion_txt_path, chromedriver_version);
                        ExtractZipfile(Application.StartupPath + @"\chromedriver_win32.zip", Application.StartupPath);
                        System.IO.File.Delete(Application.StartupPath + @"\chromedriver_win32.zip");
                        Console.WriteLine("");
                        Console.WriteLine("");
                        Console.WriteLine("");
                        Console.WriteLine("크롬 드라이버 업데이트 완료!");
                        Console.WriteLine("");
                        Console.WriteLine("");
                        MessageBox.Show("크롬 드라이버 업데이트가 완료되었습니다.");
                    }
                    catch
                    {
                        MessageBox.Show("크롬 드라이버 업데이트 중 오류가 발생했습니다.\n수동으로 업데이트 해주세요." + Environment.NewLine +
                                        "----수동 업데이트 방법----" + Environment.NewLine +
                                        "1. https://chromedriver.chromium.org/downloads 접속" + Environment.NewLine +
                                        "2. 파란색 큰 글씨로 된 ChromeDriver xx.x.xxxx.xx 형식 글씨 클릭" + Environment.NewLine +
                                        "3. chromedriver_win32.zip 다운로드 및 xx.x.xxxx.xx 로 된 버전내용 Ctrl+C(복사)" + Environment.NewLine +
                                        "4. 압축파일은 압축해제 후 프로그램 실행경로에 덮어쓰기" + Environment.NewLine +
                                        "   복사한 버전내용은 프로그램 실행경로에 chromedriver_version.txt 안에 붙여넣고 저장" + Environment.NewLine +
                                        "5. 프로그램 재 실행");
                        Application.Exit();
                    }
                }
                else
                {
                    MessageBox.Show("크롬 드라이버를 업데이트하지 않으면 프로그램을 이용할 수 없습니다.");
                    Application.Exit();
                }
            }
        }
 
        void ExtractZipfile(string sourceFilePath, string targetPath)
        {
            Encoding ibm437 = Encoding.GetEncoding("IBM437");
            Encoding euckr = Encoding.GetEncoding("euc-kr");
            using (ZipFile zip = new ZipFile(sourceFilePath))
            {
                foreach (ZipEntry entry in zip.Entries)
                {
                    byte[] ibm437_byte = ibm437.GetBytes(entry.FileName);
                    string euckr_fileName = euckr.GetString(ibm437_byte);
                    entry.FileName = euckr_fileName;
                    entry.Extract(targetPath, ExtractExistingFileAction.OverwriteSilently);
                }
            }
        }
728x90