public string DownloadLibraries()
        {
            StringBuilder   libraries = new StringBuilder();
            VersionManifest selectedVersionManifest = VersionManifest.ParseVersion(
                new DirectoryInfo(_configuration.McVersions + @"\" +
                                  (_versionToLaunch ??
                                   (_selectedProfile.SelectedVersion ?? GetLatestVersion(_selectedProfile)))));

            //MessageBox.Show(_versionToLaunch);
            SetStatusBarVisibility(true);
            StatusBarValue = 0;
            jsinit.InstallBarProgress("Проверка библиотек...", 20);
            //UpdateStatusBarText(_configuration.Localization.CheckingLibraries);
            //AppendLog("Preparing required libraries...");
            Dictionary <DownloadEntry, bool> libsToDownload = new Dictionary <DownloadEntry, bool>();

            foreach (Lib a in selectedVersionManifest.Libs)
            {
                if (!a.IsForWindows())
                {
                    continue;
                }
                if (a.DownloadInfo == null)
                {
                    libsToDownload.Add(new DownloadEntry
                    {
                        Path = a.GetPath(),
                        Url  = a.GetUrl()
                    }, false);
                    continue;
                }
                foreach (DownloadEntry entry in a.DownloadInfo?.GetDownloadsEntries(OS.WINDOWS))
                {
                    if (entry == null)
                    {
                        continue;
                    }
                    entry.Path = entry.Path ?? a.GetPath();
                    entry.Url  = entry.Url ?? a.Url;
                    libsToDownload.Add(entry, entry.IsNative);
                }
            }
            SetStatusBarMaxValue(libsToDownload.Count + 1);
            int maxlen = libsToDownload.Keys.Count;
            //MessageBox.Show(maxlen.ToString());
            int step = 0;

            foreach (DownloadEntry entry in libsToDownload.Keys)
            {
                StatusBarValue++;
                if (!File.Exists(_configuration.McLibs + @"\" + entry.Path) ||
                    _restoreVersion)
                {
                    if (!_configuration.Arguments.OfflineMode)
                    {
                        //   UpdateStatusBarAndLog($"Downloading {entry.Path.Replace('/', '\\')}...");
                        string directory = Path.GetDirectoryName(_configuration.McLibs + @"\" + entry.Path);
                        step++;
                        int stepf = Convert.ToInt32(Math.Truncate(step * (20F / (float)maxlen)));
                        jsinit.InstallBarProgress("Загрузка библиотеки " + entry.Url, 20 + stepf);
                        // AppendDebug("Url: " + (entry.Url ?? @"https://libraries.minecraft.net/" + entry.Path));
                        //  AppendDebug("DownloadDir: " + directory);
                        //  AppendDebug("LibPath: " + entry.Path.Replace('/', '\\'));
                        if (!File.Exists(directory))
                        {
                            Directory.CreateDirectory(directory);
                        }
                        try
                        {
                            new WebClient().DownloadFile(entry.Url ?? @"https://libraries.minecraft.net/" + entry.Path,
                                                         _configuration.McLibs + @"\" + entry.Path);
                        }
                        catch (WebException ex)
                        {
                            //  AppendException("Downloading failed: " + ex.Message);
                            File.Delete(_configuration.McLibs + @"\" + entry.Path);
                            continue;
                        }
                        catch (Exception ex)
                        {
                            //  AppendException("Downloading failed: " + ex.Message);
                            continue;
                        }
                    }
                    else
                    {
                        // AppendException($"Unable to download {entry.Path}: offline-mode enabled.");
                    }
                }
                if (entry.IsNative)
                {
                    //  UpdateStatusBarAndLog($"Unpacking {entry.Path.Replace('/', '\\')}...");
                    using (ZipFile zip = ZipFile.Read(_configuration.McLibs + @"\" + entry.Path))
                    {
                        foreach (ZipEntry zipEntry in zip.Where(zipEntry => zipEntry.FileName.EndsWith(".dll")))
                        {
                            //AppendDebug($"Unzipping {zipEntry.FileName}");
                            try
                            {
                                zipEntry.Extract(_configuration.McDirectory + @"\natives\",
                                                 ExtractExistingFileAction.OverwriteSilently);
                            }
                            catch (Exception ex)
                            {
                                //AppendException(ex.Message);
                            }
                        }
                    }
                }
                else
                {
                    libraries.Append(_configuration.McLibs + @"\" + entry.Path.Replace('/', '\\') + ";");
                }
                //UpdateStatusBarText(_configuration.Localization.CheckingLibraries);
            }
            libraries.Append(string.Format(@"{0}\{1}\{1}.jar", _configuration.McVersions,
                                           selectedVersionManifest.GetBaseJar()));
            jsinit.InstallBarProgress("Проверка библиотек завершена", 40);
            return(libraries.ToString());
        }