private IEnumerator CheckUpdates() { DownloadPopup.Instance.message.text = "Checando atualizações, Por favor, aguarde..."; DownloadPopup.Instance.ShowPopup(true); DownloadPopup.Instance.buttom.onClick.AddListener(CancelDownload); //Check the type of the selected client client = null; if (clientType == ClientType.FtpClient) { client = FtpDownload.CreateNewInstance(); } else if (clientType == ClientType.HttpClient) { client = HttpDownload.CreateNewInstance(); } //Starts the download process client.SetCredentials(username, password); client.Download(serverPath + "/" + changelogFileName, ""); while (!client.Done && !client.Failed) { DownloadPopup.Instance.SetProgress(client.Progress); yield return(null); } //Verify if the file download succeed if (client.Failed) { DownloadPopup.Instance.message.text = "Falha ao verificar atualizações. Tente novamente mais tarde ou contate o suporte. Erro: " + client.ErrorMessage; DownloadPopup.Instance.buttonText.text = "Fechar"; } else { DownloadPopup.Instance.ShowPopup(false); } //Each line on the file represent a new version and contains the information of the updates string str = System.Text.Encoding.UTF8.GetString(FtpDownload.Instance.Bytes); //Parse the first line which must contains the headers and the last line, which is the last version logsHistory = new List <string>(System.Text.RegularExpressions.Regex.Split(str, "\r\n|\r|\n")); string[] headers = null; string[] infos = null; if (logsHistory.Count > 0) { headers = logsHistory[0].Split(':'); infos = logsHistory[logsHistory.Count - 1].Split(':'); for (int i = 0; i < headers.Length && i < infos.Length; i++) { changes.Add(headers[i], infos[i]); } } string version; //Compare if the last version from the file is higher than the current running if (changes.TryGetValue("versao", out version) && version.CompareTo(currentVersion) == 1) { string fileName; changes.TryGetValue(headers[0], out fileName); string message = FileExists(FilesPath + fileName)? "Um arquivo referente à atualização detectada já existe. Gostaria de fazer o download novamente?\n": "Uma nova versão foi detectada. Gostaria de iniciar o download?\n"; ChangelogPopup.Instance.Message = message + "\nVersão disponível: " + changes["versao"] + "\n" + "\nData: " + changes["data"] + "\n" + "\nMudanças detectadas:\n"; string[] updates = changes["updates"].Split(','); foreach (string s in updates) { ChangelogPopup.Instance.Message += "- " + s + "\n"; } int response = 0; ChangelogPopup.Instance.FirstButtonText = "Sim"; ChangelogPopup.Instance.SecondButtonText = "Não"; ChangelogPopup.Instance.FirstButtom.onClick.AddListener(() => { response = 1; }); ChangelogPopup.Instance.SecondButtom.onClick.AddListener(() => { response = 2; }); ChangelogPopup.Instance.ShowPopup(true); //Wait until the user choose an option yield return(new WaitUntil(() => response != 0)); ChangelogPopup.Instance.ShowPopup(false); if (response == 1) { StartCoroutine(DownloadUpdate(fileName)); } //Ask if the user wnats to execute the file, if it already exists and he choose to not download again else if (FileExists(FilesPath + fileName)) { ChangelogPopup.Instance.Message = "Gostaria de executar o arquivo encontrado?"; ChangelogPopup.Instance.FirstButtonText = "Sim"; ChangelogPopup.Instance.SecondButtonText = "Não"; ChangelogPopup.Instance.FirstButtom.onClick.AddListener(() => { RunFile(fileName); ChangelogPopup.Instance.ShowPopup(false); onFinished.Invoke(); }); ChangelogPopup.Instance.SecondButtom.onClick.AddListener(() => { ChangelogPopup.Instance.ShowPopup(false); onFinished.Invoke(); }); ChangelogPopup.Instance.ShowPopup(true); } else { onFinished.Invoke(); } } else { onFinished.Invoke(); } }