Modos de operação PGWin atualizador
Para a atualização funcionar, a automação precisa começar a executar a PGWebLib a partir de um local comum na máquina do cliente, que poderá ser obtida por uma das variáveis de ambiente x86 e x64 (PathPGWebLib; PathPGWebLib_x64).
Também será criada uma variável de ambiente que indicará se existe atualização da PGWebLib (PGWebLibAtualiza), que ficará como “TRUE” até que a atualização seja concluída. Existindo essa atualização, a automação irá permitir que essa atualização seja feita através da variável (PGWebLibPermiteAtualiza).
Variáveis de ambiente:
Obs.: A atualização só é feita se a automação permitir através da variável de ambiente acima e ela não pode estar "presa" pela execução da automação. Recomenda-se que a automação se reinicie após permitir a atualizar via variável de ambiente.
Exemplo em C
BOOL VerificaRotinaAtualizacao ()
{
char szCampo[500], szPerminteAtualiza[] = "PGWebLibPermiteAtualiza", szValorTrue[] = "TRUE", szValorFalse[] = "FALSE";
char szValor[500];
HKEY hKey;
DWORD dwLenValor, dwLenCampo, dwType;
DWORD dwReturn = 0;
BOOL fStatus = FALSE;
int i;
memset(szValor, 0, sizeof(szValor));
dwReturn = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Environment"), 0, KEY_ALL_ACCESS, &hKey);
if (dwReturn == ERROR_SUCCESS) {
for (i = 0;i <= 50;i++) {
dwLenValor = sizeof (szValor);
dwLenCampo = sizeof (szCampo);
dwReturn = RegEnumValue(hKey, i, szCampo, &dwLenCampo, NULL, &dwType, (LPBYTE)szValor, &dwLenValor);
if (!strcmp(szCampo, "PGWebLibAtualiza") || dwReturn == ERROR_NO_MORE_ITEMS) break;
}
if (dwReturn == ERROR_ENVVAR_NOT_FOUND || szValor[0] == '\0')
return fStatus;
UpperCase (szValor, strlen(szValor));
if (!strcmp (szValor, szValorTrue)){
dwReturn = RegSetValueEx (hKey, szPerminteAtualiza, 0, REG_SZ, (Byte *) szValorTrue, sizeof (szValorTrue));
}
else
dwReturn = RegSetValueEx (hKey, szPerminteAtualiza, 0, REG_SZ, (Byte *) szValorFalse, sizeof (szValorFalse));
RegCloseKey(hKey);
fStatus = TRUE;
}
return fStatus;
}
Exemplo em C#
`private bool ObtemPermissao(bool existeAtualizacao)
{
try
{
Environment.SetEnvironmentVariable("PGWebLibPermiteAtualiza", existeAtualizacao.ToString(), EnvironmentVariableTarget.User);
}
catch (SecurityException)
{
return false;
}
return true;
}
public bool ConstultaAtualizacao()
{
string valor = "";
bool status = false;
try
{
valor = Environment.GetEnvironmentVariable("PGWebLibAtualiza", EnvironmentVariableTarget.User);
}
catch (SecurityException)
{
return status;
}
if (string.IsNullOrEmpty(valor))
status = false;
else
status = Convert.ToBoolean(valor);
return status;
}
Updated 6 months ago