V10 RecursosGuias
RecursosGuias
Guias
Voltar | Lista de artigos

Como efetuar o deployment de uma extensão do ERP?

Última alteração a 29/09/2021

Este artigo irá demonstrar como efetuar o deployment de uma extensão do ERP usando a aplicação Inno Setup. Esta aplicação é de instalação livre e trata-se de um software que permite criar setups para instalar programas em ambiente Windows facilmente.

Antes de se avançar para a criação de um setup para registo de extensões, é importante compreender como é realizado o registo das extensões e como é possível automatizar este registo:

Efetuar o deployment

Passo 1 - Download da aplicação

Comece por descarregar a aplicação disponível nesta localização.

Passo 2 - Criar script para deployment

Depois de instalada a aplicação, vamos iniciar o processo de criação de uma script para deployment de uma extensão. Este processo de criação pode ser feito através de um assistente disponibilizado pela própria aplicação.

Passo 3 - Configurar secções da script

Neste passo vamos começar a definir a script. Existem várias secções que podem ser configuradas, sendo importante consultar a documentação disponível. No exemplo apresentado apenas damos enfoque às secções indispensáveis para efetuar o deployment.

Defines

Esta secção permite definir algumas constantes que serão, posteriormente, usadas no código da script. Neste exemplo podemos definir cinco constantes:

;Defines
#define MyAppName "My Extensibility Ext"
#define MyAppPath "{pf}MyExtensibilityExt"
#define MyExtention = "C:UsersDaniel.VieiraDocumentsVisual Studio 2017ProjectsC#V10ExtensibilityERPExtensibilityERPbinDebugExtensibilityERP.dll"
#define MyExtentionFileName = "ExtensibilityERP.dll"
#define MyOutputBaseFilename = "ExtensibilityExt_setup"
MyAppNameNome atribuído à aplicação que estamos a instalar
MyAppPathEsta constante será depois atribuída ao pasta de instalação por omissão
MyExtensionLocalização da extensão a ser alvo de deployment
MyExtentionFileNameNome do ficheiro que corresponde à extensão
MyOutputBaseFilenameNome do setup a ser gerado

[Setup]

Esta secção contém as definições globais que serão usadas pelo instalador.

[Setup]
AppName={#MyAppName}
AppVersion=1.0
OutputBaseFilename={#MyOutputBaseFilename}
WizardStyle=modern
DisableWelcomePage=no
DefaultDirName={#MyAppPath}
DisableDirPage = No
DisableProgramGroupPage=yes
UninstallDisplayIcon={app}setup.exe
PrivilegesRequired=admin
AppNameNome da aplicação a instalar
OutputBaseFilenameNome do setup a ser gerado
DefaultDirNamePasta de instalação por omissão
DisableDirPageIndica se a pasta de instalação será mostrada ou não
PrivilegesRequiredIndica os privilégios usados na instalação

[Languages]

Esta secção configura o idioma do próprio setup que, neste caso, será o português:

[Languages]
Name: "portuguese"; MessagesFile: "compiler:LanguagesPortuguese.isl"

[Files]

Esta secção indica os ficheiros a fazer deployment, neste exemplo será apenas  a própria extensão.

[Files]
// Extensões a instalar
Source: {#MyExtention}; DestDir: "{app}"; Flags: ignoreversion; AfterInstall: RegisterExtraCloseApplicationsResources('{app}{#MyExtentionFileName}')

Nota: Após a instalação da extensão, será invocada uma procedure que se encontra na secção seguinte. Este método será explicado mais à frente.

[Code]

No caso do deployment de uma extensão para o ERP não basta instalar a mesma localmente. É necessário também registá-la no ERP manualmente na área de backstage referente à extensibilidade, tal como explicado no primeiro artigo em referência.

No entanto, importa também referir que este registo pode ser feito pelo próprio instalador, automatizando todo este processo tal como explicado nos passos seguintes.

Passo 4 - Recolha de dados

Para fazer o registo de uma extensão no ERP, é necessário recolher informações nomeadamente, as credenciais de acesso ao ERP e a empresa pretendida.

Na secção [Code] iremos colocar uma procedure para configurar o instalador e mostrar determinadas páginas ao utilizador, de forma a recolher estes dados durante o processo de instalação.

Esta procedure chama-se InitializeWizard e não é mais do que um evento que permite efetuar alterações no assistente ou nas páginas do assistente na inicialização.

Credenciais para acesso ao ERP

Nesta página, as credencias de acesso ao ERP e a empresa pretendida serão solicitadas ao utilizador.

// Acesso ao ERP.
UserPage := CreateInputQueryPage(wpWelcome,
'Informação de acesso ao ERP', '',
'Indique as suas credenciais de acesso e a empresa, depois clique em seguinte.');
UserPage.Add('Utilizador:', False);
UserPage.Add('Palavra Chave:', True);
UserPage.Add('Empresa:', False);

Linha do produto

Para que seja possível efetuar a autenticação no ERP, é também necessário indicar a linha do produto, o que será feito numa nova página.

// Linha de produto.
ProductType := CreateInputOptionPage(UserPage.ID,'Linha de produto', '',
'Indique qual a linha de produto, depois clique em seguinte.',True, False);
ProductType.Add('Executive');
ProductType.Add('Professional');

// Valor selecionado por defeito.
ProductType.Values[0] := True;

Tipo de extensão

Quando uma extensão é registada no ERP, esta pode estar disponível para todas as empresas ou apenas para uma. É nesta página que o utilizador deverá efetuar esta indicação.

// Tipo de extensão.
ExtensionTypePage := CreateInputOptionPage(UserPage.ID,
'Tipo de Extensão', '','Indique o tipo de extensão, depois clique em seguinte.',True, False);
ExtensionTypePage.Add('Extensão está disponivel para todas as empresas.');
ExtensionTypePage.Add('Extensão aplica-se apenas a uma empresa.');

// Valor selecionado por defeito.
ExtensionTypePage.Values[1] := True;

Passo 5 - Registo da extensão

Tal como explicado anteriormente, após o processo de instalação terminar, a procedure RegisterExtraCloseApplicationsResources será invocada para que esta extensão seja, então, registada no ERP.

O segundo artigo em referência fala de um processo de automatização no registo de extensões, sendo que o mecanismo aqui será em tudo idêntico. É necessário que na pasta Apl do ERP exista o aplicativo "RegisterExtension.exe". Este aplicativo fará o registo das extensões fora do ERP. A sua distribuição está a cargo das builds da PLT.

Quando uma extensão é registada para todas as empresas, esta fica alojada na pasta "PRIMAVERASG100ConfigL[E][P]CommonExtensions". Quando está disponível apenas para uma empresa ficará na pasta "PRIMAVERASG100ConfigL[E][P]Extensions[Company]".

A primeira instrução é saber qual a pasta Config do ERP. Esta informação é dada pela chave PERCURSOCONFIG no registry.

RegQueryStringValue(HKLM, 'SOFTWAREWOW6432NodePRIMAVERA'+ platRegValue + 'DefaultADM', 'PERCURSOCONFIG', erpFolder)

De seguida é verificada a existência da respetiva pasta para alojamento da extensão, usando a informação indicada pelo utilizador.

// Qual o tipo de extensão?
if (communExtension = '1') then begin

	communExtension := 'True';

	if not(DirExists(erpFolder + 'Extensions' + company)) then 
		CreateDir(erpFolder + 'Extensions' + company);

end else begin      

	communExtension := 'False';

	if not(DirExists(erpFolder + 'CommonExtensions')) then 
		CreateDir(erpFolder + 'CommonExtensions');

end;

Para alcançarmos a aplicação que efetua o registo também é necessário obter a localização da pasta Apl, fornecida pela chave PERCURSOAPL do registry.

RegQueryStringValue(HKLM, 'SOFTWAREWOW6432NodePRIMAVERA'+ platRegValue + 'DefaultADM', 'PERCURSOAPL', percursoAPL)

A próxima instrução será a execução do registo da extenção. A aplicação recebe na linha de comandos os parâmetros necessários para efetuar o registo. Estes parâmetros são explicados no artigo em referência.

if FileExists(percursoAPL + 'RegisterExtension.exe') then begin

	// Parâmetros para a linha de comando.
	cmdLineParams:= company + ' ' + user + ' ' + password + ' ' + platformType + ' "' + strInstallPath + '" ' + communExtension;

	// Registo da extensão no ERP
	if Exec(ExpandConstant(percursoAPL + 'RegisterExtension.exe'), cmdLineParams, '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then begin

		if ResultCode = 0 then begin
			MsgBox('Registo da extensão concluído com sucesso.', mbInformation, MB_OK);
		end else begin
			MsgBox('Erro ao registar a extensão no ERP, deve efectuar o registto manualmente [' + strInstallPath + '].', mbError, MB_OK);
		end
		
	end

end

Este é um exemplo de como o deployment de uma ou mais extensões para o ERP pode ser realizado, efetuando o seu registo automático. A script completa pode ser tranferida aqui.

Nota: No caso de instalações Servidor/Posto, o deployment apenas necessita de ser feito no servidor.

Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.
Artigos Relacionados
Começar a Usar Como criar um projeto de integração com Visual Studio? Como criar um projeto de extensibilidade de interface (PEX) com Visual Studio? Como criar um projeto de extensibilidade de API (Motor) com Visual Studio? Como criar separadores do utilizador com Visual Studio?