A Loja do Desenvolvedor

LojaDev Studio

A bancada de quem entrega o próprio sistema. Daqui sai o instalador do cliente novo, o pacote de atualização e a publicação no seu servidor — e é daqui que o sistema do seu cliente passa a se atualizar sozinho.

Para quem é

Você compila, você entrega

O Studio não é um produto que o seu cliente vê.

Você recebe os fontes, compila a sua versão do sistema e atende os seus clientes. O Studio é a ferramenta que fica na sua bancada e transforma a sua pasta C:\Sistema em coisas que você pode enviar: um instalador completo, um pacote de atualização, um arquivo publicado no seu servidor.

Nada do que sai daqui leva a nossa marca. O nome do sistema, o CNPJ, os telefones, o responsável técnico da NF-e e as suas logos vão como você já configurou na sua base — o Studio lê tudo isso de lá em vez de pedir de novo.

As três abas

Cada uma resolve um momento diferente da vida de um cliente.

ABA 1

Instalador completo

Um cliente novo. Empacota a sua pasta do sistema inteira com um banco limpo, gerado a partir da sua base de teste — o cadastro fiscal e as tabelas de referência ficam, o movimento sai.

ABA 2

Atualizador avulso

Um cliente que já opera. Você marca o que vai no pacote e saem três arquivos: o .zip, o versao.json e um Atualizar x.y.z.exe de dois cliques.

ABA 3

Publicação

Sobe o par de arquivos para o seu servidor por FTP, FTPS ou SFTP. Depois baixa de volta pelo endereço público e confere — é o passo que responde ao “publiquei e não chegou”.

A aba Instalador completo do LojaDev Studio, com os campos de pasta do sistema, pasta de saída, nomes dos atalhos, endereço de atualização e as três logos.
Aba 1 — Instalador completo. Repare no campo Endereço de atualização do seu servidor: é ele que faz o sistema do cliente nascer sabendo onde procurar. Deixando em branco, o cliente nunca procura atualização — e aí só o caminho B funciona.

O coração disto

A atualização automática, do lado do cliente

O que muda, na prática, é que ninguém mais precisa ir até lá.

Antes, atualizar um cliente era mandar o executável e explicar por telefone onde colar. Agora o sistema dele procura sozinho, baixa sozinho e troca sozinho — e o operador só é avisado, nunca interrompido.

O que o lojista vê

Ele abre o sistema como sempre. Em segundo plano, sem tela e sem espera, o Retaguarda verifica se há versão nova e, havendo, já baixa. Quando termina, aparece um aviso no sino de notificações dizendo que a atualização chegou e o que mudou nela — o texto é o que você escreveu na aba 2.

Ele continua trabalhando. A troca dos arquivos acontece quando ele fecha o sistema, que é o único momento em que ninguém está no meio de uma venda. Na abertura seguinte, já é a versão nova.

Se ele quiser adiantar, o menu de atualização tem o botão Instalar e reiniciar. E se nada for feito, o aviso volta no próximo login — o pacote fica guardado, conferido, esperando.

A tela de atualização do sistema no cliente, mostrando versão instalada, endereço consultado, versão disponível, tamanho do pacote e a lista do que mudou.
A tela do cliente. É a mesma nos dois caminhos — não há como o lojista saber se o pacote veio do seu servidor ou de um arquivo que você mandou. Procura em mostra o endereço efetivo, e é a primeira linha a olhar quando algo não chega. O texto de baixo é exatamente o que você escreveu na aba 2. E o F8 só aparece habilitado depois que o pacote foi baixado e conferido.
No PDV é diferente, de propósito

O terminal de caixa também se atualiza sozinho, mas sem avisar nada na tela. Quem está no caixa não pode ser interrompido por uma notificação no meio da fila.

Por que dá para confiar

A ordem das etapas é a defesa. Nada é tocado na pasta do sistema antes do pacote estar inteiro e conferido:

  1. Lê o manifestoUm arquivo de texto pequeno, com o número da versão e a impressão digital do pacote.
  2. Compara a versãoSe não for mais nova que a instalada, para aqui. Nada é baixado.
  3. Baixa para um arquivo temporárioFora da pasta do sistema, com outro nome.
  4. Confere o tamanhoPega download cortado — e a página de erro do servidor salva como se fosse um zip.
  5. Confere a impressão digital (SHA-256)Byte por byte. Não batendo, o pacote é recusado e apagado.
  6. Extrai para uma área de esperaAinda fora da pasta do sistema.
  7. Só então marca como prontoÉ esta marca que faz o sino avisar.
  8. A troca é a última etapa — e é reversívelCada arquivo trocado vira .old antes de receber o novo. Se qualquer um falhar, tudo volta ao lugar e nada é perdido.
Falhar não faz estrago

Se a troca não der certo, nada foi alterado, o pacote continua guardado e a próxima abertura tenta de novo. O operador não vê mensagem de erro nenhuma — o motivo fica no log, em C:\Sistema\logs\.

Os dois caminhos

Com servidor ou sem servidor

Você escolhe. O sistema do cliente se comporta igual nos dois.

A diferença está só em como o pacote chega até a máquina dele. Depois que chega, o caminho é o mesmo — as oito etapas acima, sem atalho em nenhuma delas.

A aba Atualizador avulso, com a lista do que vai no pacote, a versão lida do executável e o campo de notas.
Aba 2 — Atualizador avulso. A versão aparece grande e não é digitável: ela sai do Retaguarda.exe da sua pasta. A lista mostra o tamanho de cada item antes de você gerar — aqui a PreVenda ficou de fora e o pacote caiu de 302 para 161 MB. O texto do campo O que mudou nesta versão é o que o lojista vai ler na tela dele.
Caminho A

Você tem um servidor

  1. Na aba 2, você marca o que vai no pacote e gera. Saem o .zip e o versao.json.
  2. Na aba 3, informa o endereço, o usuário e a senha, e manda subir. O Studio envia o zip primeiro e o manifesto por último.
  3. Ele então baixa de volta pelo endereço público e confere o tamanho e a impressão digital do que está lá.
  4. Pronto. Todos os seus clientes recebem no próximo login deles, sem você fazer mais nada.

O endereço do seu servidor já está gravado no banco do cliente desde a instalação — é o campo que você preencheu na aba 1.

Caminho B

Você não tem servidor

  1. A mesma aba 2 já gerou, junto com os outros dois arquivos, um Atualizar 7.4.4.exe.
  2. Você manda esse arquivo ao cliente por onde quiser — WhatsApp, e-mail, pendrive.
  3. Ele dá dois cliques. O programa mostra a versão e o que mudou, deposita os dois arquivos na pasta que o sistema vigia, e sai.
  4. Ele abre o sistema. Daí em diante, idêntico ao caminho A.

Esse executável não instala nada: não troca arquivo, não mexe no banco, não pede permissão de administrador. Ele só entrega o pacote e some.

Daqui para a frente é o mesmo caminho nos dois casos. O sistema confere a impressão digital, avisa no sino, e troca os arquivos quando o lojista fechar. A pasta vigiada é C:\Sistema\atualizacao\entrada — e se um pacote for deixado ali à mão, ele tem prioridade sobre o servidor, porque quem está na frente da máquina sabe o que está fazendo.
A aba Publicação, com os campos de servidor FTP, usuário, pasta remota e endereço público.
Aba 3 — Publicação. O Endereço público é o mesmo campo da aba 1: o que você põe aqui é onde o cliente vai procurar. Depois de subir, o Studio baixa daqui e confere — se você errar a pasta ou faltar permissão de leitura, aparece agora, e não no cliente.

O par de arquivos

Dois arquivos, lado a lado. É todo o contrato.

Sua hospedagem pode ser a mais simples que existir: os dois arquivos precisam apenas estar acessíveis por um endereço da internet. Não há PHP, não há banco de dados, não há programa rodando no servidor. Uma pasta pública em qualquer hospedagem serve.

versao.json
{
  "versao":      "7.4.4",
  "arquivo":     "atualizacao_7.4.4.zip",
  "tamanho":     26214400,
  "sha256":      "9f2c…",
  "obrigatoria": false,
  "minima":      "7.2.0",
  "notas":       "O que mudou nesta versão"
}
CampoO que faz
versaoO número que o cliente compara com o dele. Sai do próprio Retaguarda.exe e não é digitável — mais sobre isso abaixo.
arquivoO nome do zip. Fica ao lado do manifesto, ou pode ser um endereço completo se você servir o pacote de outro lugar.
tamanhoConferido antes de qualquer coisa. É o que pega download cortado.
sha256A impressão digital do pacote. Não batendo, o pacote é recusado.
obrigatoriaMarca a atualização como obrigatória — aparece em vermelho na tela do cliente.
minimaO piso. Um cliente muito atrasado não recebe este pacote direto; ele precisa passar por uma versão intermediária antes. Deixe em branco se não houver piso.
notasO texto que o lojista lê na tela. Escreva para ele, não para você.
Você nunca escreve esse arquivo à mão

Contar bytes e calcular impressão digital na unha garante erro — e o erro seria silencioso do pior jeito: o seu pacote recusado no seu cliente, corretamente, sem nada que apontasse a causa. O Studio monta o manifesto sozinho.

O endereço no cliente

Um campo só, preenchido uma vez.

No sistema do cliente, o endereço fica em Configurações › Config. Fiscais › Atualização. Se você usou a aba 1 para gerar o instalador, ele já nasce preenchido e você não precisa tocar nisso nunca mais.

O campo aceita três formas, e as três funcionam:

Você informaO sistema procura o manifesto em
…/erp/versao.jsonnele mesmo
…/erp/pacote.zipao lado do arquivo
…/erpdentro da pasta

A tela de atualização mostra o endereço efetivo — onde o sistema realmente vai procurar. Se algo não chegar ao cliente, é a primeira linha a olhar.

Três coisas que vão te pegar

Melhor saber antes.

1. O Retaguarda.exe tem que ir no pacote

É ele que carrega o número da versão. Se você mandar só a pasta Relatorio, por exemplo, o cliente recebe os arquivos e continua na versão antiga — porque quem responde pela versão é o próprio executável. A tela avisa em vermelho quando você desmarca.

2. A versão não se digita

Ela sai do Retaguarda.exe que está na sua pasta, e o campo não é editável. Se fosse, seria possível publicar “7.4.5” com um executável que diz 7.4.4 — e o cliente instalaria em laço, porque toda verificação acharia versão nova para sempre.

Só os três primeiros dígitos contam. O quarto é o número da compilação e muda toda vez que você compila; se ele entrasse na conta, toda recompilação sua viraria “versão nova” na tela do cliente.

3. Só o que muda precisa ir

O pacote não precisa levar a pasta inteira. Marque os executáveis e as pastas que realmente mudaram — a tela mostra o tamanho de cada item antes de você gerar, e a diferença entre 300 MB e 80 MB aparece no tempo de download de cada cliente seu.

E uma para o dia da estreia

Antes de sair publicando para todo mundo, rode o pacote em um cliente só, ou numa máquina de teste que não seja a sua. Na sua bancada tudo já está instalado e configurado — e é justamente isso que o teste precisa exercitar.

O que você precisa ter

ParaVocê precisa de
Gerar instalador e pacoteSó o LojaDev Studio e a sua pasta C:\Sistema.
Entregar sem servidorNada além disso. O Atualizar x.y.z.exe vai por WhatsApp.
Entregar pelo servidorUma hospedagem qualquer com FTP, FTPS ou SFTP, e um endereço público. Sem PHP e sem banco.

LojaDev Studio · A Loja do Desenvolvedor · documento de apoio ao vídeo de apresentação