V10 RecursosGuías
RecursosGuías
Guías
Años | Lista de Artículos

¿Cómo realizar el deployment de una extensión del ERP?

Última modificación el 12/07/2024

Este artículo demostrará cómo realizar el deployment de una extensión ERP utilizando la aplicación Inno Setup. Esta aplicación es de instalación gratuita y se trata de un software que permite crear fácilmente configuraciones para instalar programas en un entorno Windows.

Antes de pasar a la creación de una configuración para registrar extensiones, es importante comprender cómo se registran las extensiones y cómo se puede automatizar este registro:

Realizar el deployment

Paso 1 - Descargar la aplicación

Comience descargando la aplicación disponible en esta localización.

Paso 2 - Crear un script de deployment

Una vez instalada la aplicación, vamos a iniciar el proceso de creación de un script para deployment de una extensión. Este proceso de creación puede realizarse mediante un asistente que proporciona la propia aplicación.

 width=

Paso 3 - Configurar las secciones del script

En este paso comenzaremos a definir el script. Hay varias secciones que se pueden configurar, y es importante consultar la documentación disponible. En este ejemplo, solo nos centraremos en las secciones que son esenciales para el deployment.

Defines

Esta sección permite definir algunas constantes que se utilizarán posteriormente en el código del script. En este ejemplo 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"
MyAppNameNombre asignado a la aplicación que estamos instalando
MyAppPathEsta constante se asignará por defecto a la carpeta de instalación
MyExtensionLocalización de la extensión que va a ser objeto de deployment
MyExtentionFileNameNombre del archivo que corresponde a la extensión
MyOutputBaseFilenameNombre de la configuración que se va a generar

[/av_p]

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.

Bookmark or share this article
Esta página foi útil?
Obrigado pelo seu voto.
Artículos Relacionados
Empezar a usar ¿Cómo se crea un proyecto de integración con Visual Studio? ¿Cómo crear un proyecto de extensibilidad de interfaz (PEX) con Visual Studio? ¿Cómo crear pestañas de usuario con Visual Studio? ¿Cómo crear funciones de usuario?