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;
}