Пример #1
0
    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();
        }
    }