Aplicativo de atualização de Beeware

Neste artigo, você explorará o processo de implementação de um aplicativo de atualização Beeware para manter seus aplicativos Python atualizados.

O Beeware fornece funcionalidade integrada para implementar mecanismos de atualização em seus aplicativos Python, permitindo que você distribua facilmente atualizações para seus usuários finais.

Em nosso artigo anterior , convertemos com sucesso nosso aplicativo em um aplicativo nativo. No entanto, para aplicações do mundo real, esta não é a etapa final. Você pode encontrar problemas durante o teste e exigir modificações. Mesmo que seu aplicativo seja perfeito, você pode eventualmente querer lançar uma segunda versão com melhorias.

Portanto, qual é o processo para atualizar seu aplicativo instalado depois de modificar o código?



Por que os mecanismos de atualização são importantes

As atualizações de software são cruciais para manter a qualidade e a segurança de seus aplicativos. As atualizações geralmente incluem novos recursos, melhorias de desempenho e correções de bugs que aprimoram a experiência do usuário e solucionam problemas conhecidos. Além disso, as atualizações podem corrigir vulnerabilidades de segurança, protegendo seu aplicativo e seus usuários contra possíveis ameaças à segurança. A implementação de um mecanismo de atualização eficaz em seus aplicativos Python garante que seus usuários sempre tenham acesso à versão mais recente de seu aplicativo, proporcionando uma experiência de usuário perfeita e confiável.


Atualizando o código do aplicativo

Seu aplicativo está atualmente configurado para imprimir a saída no console quando você pressiona o botão. No entanto, não é recomendado que aplicativos GUI usem o console para saída, pois eles devem usar diálogos para se comunicar com os usuários. Portanto, você precisa adicionar uma caixa de diálogo para exibir a saída em vez de imprimir no console. Para conseguir isso, você pode modificar a função de retorno de chamada de saída da seguinte maneira:

import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW

class HelloWorld(toga.App):

    def startup(self):
        main_box = toga.Box(style=Pack(direction=COLUMN))

        name_label = toga.Label(
            "Client Name: ",
            style=Pack(padding=(0, 5))
        )
        self.name_input = toga.TextInput(style=Pack(flex=1))

        name_box = toga.Box(style=Pack(direction=ROW, padding=5))
        name_box.add(name_label)
        name_box.add(self.name_input)

        password_label = toga.Label(
            "Password: ",
            style=Pack(padding=(0, 5))
        )
       
        self.password_input = toga.PasswordInput(style=Pack(flex=1))

        password_box = toga.Box(style=Pack(direction=ROW, padding=5))
        password_box.add(password_label)
        password_box.add(self.password_input)

        button = toga.Button(
            "Login",
            on_press=self.output,
            style=Pack(padding=5)
        )

        main_box.add(name_box)
        main_box.add(password_box)
        main_box.add(button)

        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = main_box
        self.main_window.show()

    def output(self, widget):
        self.main_window.info_dialog(
            f"Thank you {self.name_input.value}",
            "You are successfully logged in!"
        )

def main():
    return HelloWorld()

Quando você pressiona o botão de login, o Toga abrirá uma caixa de diálogo modal conforme especificado. Portanto, se você inserir um nome e executar o briefcase dev, a caixa de diálogo recém-adicionada será exibida.

Saída do Programa

Quando você usa o briefcase dev para executar seu código, ele cria um ambiente de tempo de execução realista para seu aplicativo, mas não utiliza nenhuma infraestrutura de plataforma para empacotá-lo como um aplicativo. Portanto, ao executar o briefcase dev e pressionar o botão de login, você verá a nova caixa de diálogo. No entanto, quando você executar a execução do porta-arquivos, a caixa de diálogo não aparecerá. O motivo é que a execução de pasta copia seu código no pacote de aplicativos e, no momento, seu aplicativo ainda contém o código antigo.

Para atualizar seu aplicativo com o novo código, você pode excluir o antigo diretório da plataforma e começar do zero ou pode usar uma abordagem mais simples fornecida pelo Briefcase – atualizando o código do seu aplicativo integrado.

Mac OS

(beeware-mrxenv) $ briefcase update

[helloworld] Updating application code...
Installing src/helloworld...

[helloworld] Application updated.

Linux

(beeware-mrxenv) $ briefcase update

[helloworld] Updating application code...
Installing src/helloworld...

[helloworld] Application updated.

janelas

(beeware-mrxenv) C:\...>briefcase update

[helloworld] Updating application code...
Installing src/helloworld...

[helloworld] Application updated.

Caso o Porta-arquivos não consiga localizar o modelo com scaffold, ele usará automaticamente o comando create para criar um novo scaffold. Agora que você atualizou o código do instalador, pode executar o briefcase build para recompilar o aplicativo, o briefcase run para executar o aplicativo atualizado e o briefcase package para empacotar o aplicativo para distribuição. Se você for um usuário do macOS, é importante observar que, conforme mencionado no artigo anterior, sugerimos usar o sinalizador –no-sign ao executar o pacote maleta para evitar a dificuldade de configurar uma identidade de assinatura de código e manter o processo como direto possível.


Atualizar e executar

Se você está constantemente fazendo alterações em seu código e deseja ver os resultados rapidamente, pode atualizar e executar seu aplicativo imediatamente. Se você quiser testar como seu aplicativo é executado como um binário nativo ou solucionar um problema que ocorre apenas no formato empacotado, talvez seja necessário usar chamadas repetidas para a execução do porta-arquivos. Para simplificar o processo de atualização e execução do aplicativo integrado, o Briefcase fornece uma opção de atalho – a opção -u (ou –update) no comando de execução.

Vamos fazer outra alteração no código. Se você não digitou um nome na caixa de entrada de texto, a caixa de diálogo dirá “Obrigado”. Podemos modificar a função de saída para lidar com esse cenário. Adicione um método utilitário na parte superior do arquivo, entre as importações e a definição da classe HelloWorld, que pode gerar uma saudação apropriada com base no nome fornecido.

import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW


class HelloWorld(toga.App):

    def startup(self):
        main_box = toga.Box(style=Pack(direction=COLUMN))

        name_label = toga.Label(
            "Client Name: ",
            style=Pack(padding=(0, 5))
        )
        self.name_input = toga.TextInput(style=Pack(flex=1))

        name_box = toga.Box(style=Pack(direction=ROW, padding=5))
        name_box.add(name_label)
        name_box.add(self.name_input)

        password_label = toga.Label(
            "Password: ",
            style=Pack(padding=(0, 5))
        )
       
        self.password_input = toga.PasswordInput(style=Pack(flex=1))

        password_box = toga.Box(style=Pack(direction=ROW, padding=5))
        password_box.add(password_label)
        password_box.add(self.password_input)

        button = toga.Button(
            "Login",
            on_press=self.output,
            style=Pack(padding=5)
        )

        main_box.add(name_box)
        main_box.add(password_box)
        main_box.add(button)

        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = main_box
        self.main_window.show()

    def login(self, nm, pwd):
        if nm and pwd:
            return f"Thank you {nm}"
        else:
            return f"Login failed"

    def desc(self, nm, pwd):
        if nm and pwd:
            return "You are successfully logged in!"
        else:
            return "Your inserted information is invalid!"

    def output(self, widget):
        self.main_window.info_dialog(
            self.login(self.name_input.value, self.password_input.value),
            self.desc(self.name_input.value, self.password_input.value)
        )


def main():
    return HelloWorld()
Exemplo de Explicação
  • No código acima, estamos definindo um aplicativo GUI usando a biblioteca Toga . O aplicativo possui dois campos de entrada para “ Nome do cliente ” e “ Senha ”, e um botão “ Login ”. Quando o botão é pressionado, ele chama o método “output”, que pega os valores de entrada e os passa para outros dois métodos, “login” e “desc”.
  • O método “login” verifica se ambos os campos possuem valores e retorna uma string de acordo. Se ambos os campos tiverem valores, retorna “Thank you” seguido do nome do cliente, caso contrário retorna “Login failed”.
  • O método “ desc ” também verifica se ambos os campos possuem valores e retorna uma string de acordo. Se ambos os campos tiverem valores, retorna “Você se conectou com sucesso!”, caso contrário, retorna “Sua informação inserida é inválida!”.
  • O método “output” chama os métodos “login” e “desc” com os valores de entrada e exibe as strings retornadas em uma caixa de diálogo de informações.
  • O layout da GUI é criado usando os widgets Box e Label do Toga, e o estilo é definido usando a classe Pack. A classe MainWindow é usada para criar a janela principal do aplicativo e para mostrar a GUI.
  • Por fim, a função main() retorna uma instância da classe HelloWorld, que é o aplicativo Toga que definimos.

Para garantir que a nova lógica funcione, você deve executar seu aplicativo no modo de desenvolvimento usando o briefcase dev.

Depois de confirmar as alterações, você pode atualizar, criar e executar o aplicativo usando um único comando.

Mac OS

(beeware-mrxenv) $ briefcase run -u

[helloworld] Updating application code...
Installing src/helloworld...

[helloworld] Removing unneeded app content...
...

[helloworld] Application updated.

[helloworld] Building application...
...

[helloworld] Built build/helloworld/macos/app/Hello World.app

[helloworld] Starting app...

Linux

(beeware-mrxenv) $ briefcase run -u

[helloworld] Finalizing application configuration...
Targeting ubuntu:jammy (Vendor base debian)
Determining glibc version... done

Targeting glibc 2.35
Targeting Python3.10

[helloworld] Updating application code...
Installing src/helloworld... done

[helloworld] Removing unneeded app content...
...

[helloworld] Application updated.

[helloworld] Building application...
...

[helloworld] Built build/helloworld/linux/ubuntu/jammy/helloworld-0.0.1/usr/bin/helloworld

[helloworld] Starting app...

janelas

(beeware-mrxenv) C:\...>briefcase run -u

[helloworld] Updating application code...
Installing src/helloworld...

[helloworld] Removing unneeded app content...
...

[helloworld] Application updated.

[helloworld] Starting app...

Se você modificar o código do aplicativo e quiser reempacotá-lo imediatamente, poderá usar o argumento -u com o comando package. Portanto, você pode simplesmente executar maleta package -u para conseguir isso.


Benefícios do aplicativo de atualização de Beeware

  • Atualizar seu aplicativo garante que ele tenha os recursos e correções de bugs mais recentes, o que melhora sua funcionalidade geral.
  • As atualizações de aplicativos geralmente incluem patches de segurança que protegem seu aplicativo contra vulnerabilidades e ameaças à segurança.
  • Atualizar seu aplicativo pode melhorar a interface e a experiência do usuário, tornando-o mais agradável e intuitivo para seus usuários.
  • As atualizações de aplicativos geralmente incluem melhorias de desempenho que podem tornar seu aplicativo mais rápido e eficiente.
  • Atualizar seu aplicativo garante que ele seja compatível com os dispositivos e sistemas operacionais mais recentes, o que expande seu alcance e base de usuários em potencial.

Conclusão

Ao manter seu aplicativo Beeware atualizado, você pode desfrutar de várias vantagens, como correções de bugs, acesso a novos recursos, atualizações de segurança e desempenho aprimorado. Ele também permite que você incorpore as tecnologias e práticas recomendadas mais recentes e garanta que seu aplicativo seja compatível com as versões mais recentes de sistemas operacionais e dispositivos. Atualizações frequentes podem aumentar a satisfação e o engajamento do usuário, levando a mais sucesso e lucratividade para seu aplicativo. Portanto, é altamente recomendável tornar a atualização do aplicativo Beeware uma parte rotineira do processo de desenvolvimento.

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone