Consultor Eletrônico



Kbase 43648: Como mudar o diretório corrente da sessão Progress no Datasul 10 / 11 / 12
Autor   Marcos Kirchner - CAT
Acesso   Público
Publicação   1/12/2011
O diretório corrente das sessões client do Progress no Datasul 11 é o desktop do usuário. Isto faz com que alguns arquivos temporários e vários protrace sejam gerados no desktop, o que não é conveniente.

O diretório corrente de um processo, se não for alterado pela própria aplicação, é o diretório corrente do processo criador. Quem chama o prowin32.exe no caso do Datasul 11 é o java.exe, que por sua vez é iniciado pelo jp2launcher.exe, que é iniciado pelo iexplore.exe. Como o diretório corrente do IE é o Desktop, esta configuração foi herdada pelos processos até o prowin32.exe.

Um processo pode alterar seu diretório corrente chamando a API SetCurrentDirectory. O programa de alias, indicado no config.xml, é um bom ponto para chamar esta API, pois é o primeiro programa Progress executado na sessão que temos controle.

Neste exemplo foi alterado o programa datasul-configxml-alias.p e adicionadas as seguintes linhas no início para alterar o diretório corrente para c:\temp:

DEFINE VARIABLE intResult AS INTEGER NO-UNDO.

PROCEDURE SetCurrentDirectoryA EXTERNAL "KERNEL32.DLL":
DEFINE INPUT PARAMETER chrCurDir AS CHARACTER.
DEFINE RETURN PARAMETER intResult AS LONG.
END PROCEDURE.

RUN SetCurrentDirectoryA (INPUT "c:\temp", OUTPUT intResult) NO-ERROR.


Esta configuração não resolve todos os problemas, pois alguns arquivos são abertos pelo Progress antes de o programa de alias executar, e consequentemente estão utilizando o diretório corrente antes da alteração.

Mas serve para os casos de arquivos temporários gerados pelos programas e dos arquivos protrace.