none
Dúvidas quanto a chamada de metódo RRS feed

  • Pergunta

  • Olá pessoal, tenho procurado um sistema de atualização automática para um programa que desenvolvi na faculdade, encontrei um tutorial explicando no qual crio um arquivo .xml com informações da versão do aplicativo e coloco esse arquivo no meu site, o metódo no programa então lê o arquivo e compara a versão mais recente e a versão instalada, dependendo ele baixa o novo instalador. Meu problema é que não consegui fazer a simples chamada do metódo descrito no tutorial, pois não tenho muito conhecimento em c#. Eu quero fazer a chamada assim que o form for carregado. Segue o metódo:

    string dowloadUrl = "";
                Version newVersion = null;
                string xmlUrl = "http://www.meusite.com/update1.xml";
                XmlTextReader reader = null;
                try
                {
                    reader = new XmlTextReader(xmlUrl);
                    reader.MoveToContent();
                    string elementName = "";
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "update"))
                    {
                        while (reader.Read())
                        {
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                elementName = reader.Name;
                            }
                            else
                            {
                                if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
                                {
                                    switch (elementName)
                                    {
                                        case "version":
                                            newVersion = new Version(reader.Value);
                                            break;
                                        case "url":
                                            dowloadUrl = reader.Value;
                                            break;
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
                finally
                {
                    if (reader != null)
                        reader.Close();
                }
                Version applicationVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                if (applicationVersion.CompareTo(newVersion) < 0)
                {
                    if (DialogResult.Yes == MessageBox.Show("Nova versão do aplicativo está disponível, você deseja fazer o dowload agora?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2))
                    {
                        System.Diagnostics.Process.Start(dowloadUrl);
                    }
                    else
                    {
    
                    }
                }
                else
                {
                    MessageBox.Show("O programa está atualizado");
                }
            }
    Desde já agradeço a todos!


    Roberto Gomez

    quarta-feira, 16 de março de 2016 19:27

Respostas

  • Boa tarde Robert,

    Você já tem o método pronto, certo?

    Basta que você coloque isso dentro de alguma classe, declarando suas respectivas variáveis, e então você precisa instanciar e chamar essa classe com o método desejado, por exemplo:

    class <nome> = new class();
    
    class.metodo();


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quarta-feira, 16 de março de 2016 19:45
  • Certo,

    Se você está fazendo pelo clique no botão, fica até mais fácil.

    Atribua um Id para o botão e dentro do método do botão você realiza o que precisa.

    void GreetingBtn_Click(Object sender,
                               EventArgs e)
        {
          
        }


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quarta-feira, 16 de março de 2016 20:33
  • Poderia ser feito sim dessa maneira, ou o código do update(), poderia estar dentro do evento.

    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quinta-feira, 17 de março de 2016 11:54
  • Se você está chamando o método e ele não está no mesmo lugar, não vai funcionar mesmo!

    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quinta-feira, 17 de março de 2016 16:47

Todas as Respostas

  • Boa tarde Robert,

    Você já tem o método pronto, certo?

    Basta que você coloque isso dentro de alguma classe, declarando suas respectivas variáveis, e então você precisa instanciar e chamar essa classe com o método desejado, por exemplo:

    class <nome> = new class();
    
    class.metodo();


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quarta-feira, 16 de março de 2016 19:45
  • E ai Roberto tudo bem? teria como você fazer um exemplo pra mim por favor, estou tendo uma pequena dificuldade? Como se ao clicasse em um botão o código que postei fosse ativado e procurasse atualização.  

    Obrigado pela resposta!


    Roberto Gomez

    quarta-feira, 16 de março de 2016 20:26
  • Certo,

    Se você está fazendo pelo clique no botão, fica até mais fácil.

    Atribua um Id para o botão e dentro do método do botão você realiza o que precisa.

    void GreetingBtn_Click(Object sender,
                               EventArgs e)
        {
          
        }


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quarta-feira, 16 de março de 2016 20:33
  • Então, essa parte eu entendi, mas como faço a chamada? Ex esse é meu metodo:

    static void Update(string[] args)
            {
                string dowloadUrl = "";
                Version newVersion = null;
                string xmlUrl = "http://www.meusite.com/update1.xml";
                XmlTextReader reader = null;
                try
                {
                    reader = new XmlTextReader(xmlUrl);
                    reader.MoveToContent();
                    string elementName = "";
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "updateonKerd"))
                    {
                        while (reader.Read())
                        {
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                elementName = reader.Name;
                            }
                            else
                            {
                                if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
                                {
                                    switch (elementName)
                                    {
                                        case "version":
                                            newVersion = new Version(reader.Value);
                                            break;
                                        case "url":
                                            dowloadUrl = reader.Value;
                                            break;
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
                finally
                {
                    if (reader != null)
                        reader.Close();
                }
                Version applicationVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                if (applicationVersion.CompareTo(newVersion) < 0)
                {
                    if (DialogResult.Yes == MessageBox.Show("Nova versão do aplicativo está disponível, você deseja fazer o dowload agora?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2))
                    {
                        System.Diagnostics.Process.Start(dowloadUrl);
                    }
                    else
                    {
    
                    }
                }
                else
                {
                    MessageBox.Show("O programa está atualizado");
                }
            }

    Então a chamada seria algo como:

    void GreetingBtn_Click(Object sender, EventArgs e)
        {
            static void Update(string[] args)
        }

    Desculpe minha falta de conhecimento, mas como disse estou aprendendo ainda, se puder faça um exmplo pra mim por favor e obrigado pela ajuda!


    Roberto Gomez

    quarta-feira, 16 de março de 2016 21:15
  • Poderia ser feito sim dessa maneira, ou o código do update(), poderia estar dentro do evento.

    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quinta-feira, 17 de março de 2016 11:54
  • não funcionou, ao colocar Update() no evento não acontece nada, e ao colocar
    Update(string[] args)
    string[] args fica grifado de vermelho

    Roberto Gomez

    quinta-feira, 17 de março de 2016 16:35
  • Se você está chamando o método e ele não está no mesmo lugar, não vai funcionar mesmo!

    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ quinta-feira, 17 de março de 2016 19:18
    quinta-feira, 17 de março de 2016 16:47