public static void ExtractZipFileToDirectory(string zipFilePath, string destinationFolder, GithubProduct product)
        {
            if (string.IsNullOrEmpty(zipFilePath) || string.IsNullOrEmpty(destinationFolder) || !Directory.Exists(destinationFolder) || !File.Exists(zipFilePath))
            {
                return;
            }

            var tempFolder = Path.Combine(destinationFolder, "TempUnzipFolder");

            Directory.CreateDirectory(tempFolder);
            System.IO.Compression.ZipFile.ExtractToDirectory(zipFilePath, tempFolder, true);

            switch (product)
            {
            case GithubProduct.Client:
                ExtractClient(tempFolder);
                break;

            case GithubProduct.Server:
                ExtractServer(tempFolder);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(product), product, null);
            }

            Directory.Delete(tempFolder, true);

            File.Delete(zipFilePath);
        }
        public static void ExtractZipFileToDirectory(string zipFilePath, string destinationFolder, GithubProduct product)
        {
            if (string.IsNullOrEmpty(zipFilePath) || string.IsNullOrEmpty(destinationFolder) || !Directory.Exists(destinationFolder) || !File.Exists(zipFilePath))
            {
                return;
            }

            using (var zipFile = ZipFile.Read(zipFilePath))
            {
                var tempFolder = Path.Combine(destinationFolder, "TempUnzipFolder");
                Directory.CreateDirectory(tempFolder);
                zipFile.ExtractAll(tempFolder, ExtractExistingFileAction.OverwriteSilently);

                switch (product)
                {
                case GithubProduct.Client:
                    ExtractClient(tempFolder);
                    break;

                case GithubProduct.Server:
                    ExtractServer(tempFolder);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(product), product, null);
                }

                Directory.Delete(tempFolder, true);
            }

            File.Delete(zipFilePath);
        }