Terminada a montagem do ambiente é possível organizar e preparar sua extensão para distribuição.

Após a preparação inicial do seu projeto, você ainda poderá modificar os arquivos gerados conforme sua necessidade. Eles fazem parte do seu projeto agora e não serão atualizados em futuras versões.


Organização dos arquivos e pastas

A tabela abaixo relaciona o que você pode ter nas pastas do seu projeto. 

ElementoPastaDescriçãoDestinoLocal de entrega
versao.ini.

Arquivo que informa a versão da extensão (major version, minor version e release).

Além desses, o build_number é passado como parâmetro no empacotamento.

  • Se a extensão é um plugin Python (.COP), o comando py_gerar_cop se encarrega de gerar o plugin com a versão definida no versao.ini.
  • Para outros tipos de extensão Python, é possível usar o comando py_alterar_versao para gerar os arquivos de versão utilizáveis pelo Python.
  • Para todos os outros tipos de plugins, executáveis e DLLs é desejável que o desenvolvedor utilize essa versão, pois isso facilita o suporte.
EmpacotadorUsado somente durante o empacotamento
arquivo .COPclient

Um arquivo com esta extensão é gerado durante o empacotamento de um plugin Python.

Terminais<ncr solution>\plugins\<nome_do_plugin>
arquivo .COLclient

Um plugin DLL 'win32' deve ser fornecido com esta extensão para as estações. A compilação e cópia do arquivo na pasta são de responsabilidade do fornecedor.

Terminais<ncr solution>\plugins\<nome_do_plugin>
arquivo Plugin.*.DLLclientUm plugin DLL 'assembly', do dotnet, deve ser fornecido com este prefixo e extensão para as estações. A compilação e cópia do arquivo na pasta são de responsabilidade do fornecedor.Terminais<ncr solution>\plugins\<nome_do_plugin>
ui.configclientArquivo que especifica adições à interface do NCR Colibri nos plugins.Terminais<ncr solution>\plugins\<nome_do_plugin>
pasta ServerserverO empacotador adiciona a estrutura completa desta pasta ao destino no servidorServidor<ncr solution>\master\colibri\<nome_da_extensao>
pasta ExtrasextrasO empacotador adiciona a estrutura completa desta pasta ao destino nas estaçoes. Terminais<ncr solution>\plugins\<nome_do_plugin>\Extras
pasta ReportsreportsO empacotador adiciona a estrutura completa desta pasta ao destino nas estaçoes. Saiba mais em Reports.Terminais<ncr solution>\plugins\<nome_do_plugin>\Reports
pasta TemplatestemplatesO empacotador adiciona a estrutura completa desta pasta ao destino nas estaçoes. Saiba mais em Personalizar templates.Terminais<ncr solution>\plugins\<nome_do_plugin>\Reports
pasta _scripts_scriptsEstrutura de pastas e comandos SQL que gera o arquivo _scripts.zip. Saiba mais em Acesso ao SQL.MasterExecutados contra o banco de dados do produto pos, cbo ou master
pasta _build_buildPasta auxiliar que pode ser utilizada com os arquivos usados no empacotamentoEmpacotadorUsado somente durante o empacotamento
Entendendo o manifesto

O manifesto.dat é um arquivo JSON incluido na extensão e que lista os arquivos que serão na sua instalação.

O arquivo manistesto.dat é gerado a partir do arquivo manifesto.server durante o empacotamento. o SDK cria o arquivo manifesto.server pré-configurado, mas você pode alterá-lo conforme as suas necessidades.

A tabela abaixo lista as chaves do manistesto.server e seus significados.

ChaveSignificado
nomeNome único da extensão
nome_exibicaoNome de exibição da extensão
produto

Produto ao qual se aplica:

  • pos - Extensão somente para o POS
  • cbo - Extensão somente para o Back Office
  • master - Extensão para POS/Back Office
  • universal - Não define produto

Importante!

A base de dados padrão onde são aplicados os scripts do pacote varia conforme o produto definido nesta chave.

empresaNome da empresa fornecedora
sigla_empresaSigla da empresa, com até 10 carácteres alfanuméricos
nivel_sdkObrigatória, especifica o nível do SDK, que atualmente é 1
arquivosLista de arquivos da extensão.
versoes_bases

Lista de schemas e versões de banco compatíveis com a extensão. Qualquer versão de schema de banco de dados superior o informado no manifesto bloqueia a instalação da extensão pelo Master.

{"schema":"dbo", "versao": "01.02.03.04"}
Lista de portas da extensão a serem gerenciadas pelo Master
Lista de comandos da extensão a serem gerenciados pelo Master. Os comandos poderão ser executados via api, durante a instalação da extensão e ter tipos de agendamentos associados
Lista de tipos de agendamentos associados a comandos da extensão
Lista de agendamentos da extensão
Lista de execuções de comandos

Gerando um arquivo COP (somente Python)

Para distribuir os plugins em python é necessário gerar o arquivo COP de cada plugin na pasta correta de distribuição (client ou server).

Para isso, abra um prompt de comando na pasta do SDK (cmd) e execute o comando

inv py-gerar-cop nome-extensao --versao=1.2.3 --build-number=4 --develop=true 

onde:

nome-extensaoNome da extensão, que indica a subpasta onde está localizada a extensão que você quer empacotar.
versaoVersao do plugin. Caso não fornecida, será obtida do plugins python ou do arquivo versao.ini
build-number

Número do build que é adicionado à versão da extensão, juntamente com as outras informações de versão obtidas do arquivo versao.ini.

develop

Indica que é um pacote de desenvolvimento (esse é o padrão). Para versão final esse valor deve ser false.

O procedimento gera um arquivo .cop na subpasta cliente. 

Gerando um pacote da extensão

Para empacotar sua extensão, abra um prompt de comando na pasta do SDK (cmd) e execute o comando

inv empacotar nome-extensao --build-number=5 --develop=true 

onde:

nome-extensaoNome da extensão, que indica a subpasta onde está localizada a extensão que você quer empacotar.
build-number

Número do build que é adicionado à versão da extensão, juntamente com as outras informações de versão obtidas do arquivo versao.ini.

develop

Indica que é um pacote de desenvolvimento (esse é o padrão). Para versão final esse valor deve ser false.

O empacotamento gera um arquivo de extensão .cmpkg na subpasta _build\temp. Este arquivo pode ser importado no Master como um pacote de distribuição.