Uma breve descrição do contexto:
Minha empresa tem uma aplicação desenvolvida que normalmente era executada de um diretório na rede. Por executar em rede, temos alguns problemas, portanto como solução nossa aplicação faz uma cópia de si mesma para a área temporária do usuário e a executa. Foram realizados diversos testes e a seguinte situação foi notada em algumas máquinas com Windows 10:
Nenhum .jar executa na pasta temporária do usuário do Windows (%temp%) ou em seus subdiretórios.
Usei duas máquinas como base para teste, ambas com W10 Home Compilação 17134.285, uma executa e outra não.
Abaixo algumas situações analisadas que podem vir a ajudar
- Em ambas as máquinas o conteúdo de
HKEY_CLASSES_ROOT\jarfile\shell\open\command\(padrão)
é"C:\Program Files\Java\jre1.8.0_181\bin\javaw.exe" -jar "%1" %*
. - Também em ambas as máquinas, o usuário que está tentando executar a aplicação é proprietário da pasta Temp, então não acredito que seja questão de permissão.
- Na máquina que não consegue executar, nenhum erro é apresentado e nenhum log foi identificado no EventLog do Windows, é como se tivesse executado e encerrado instantâneamente.
- Também na máquina que não consegue executar, não consegui notar o aplicativo do java executando no gerenciador de tarefas, mas talvez ele tenha executado e encerrado rápido demais. Alguma sugestão para como identificar se ele chegou a executar em algum momento?
- Pensando em um possível bloqueio por parte do Firewall do Windows, o mesmo foi desabilitado e mesmo assim o .jar não executou.
Como estou tentando executar o .jar
- Através de outro programa desenvolvido internamente em Java (fora da área temporária);
E para simular, estou tentando estas outras formas que eu sei que deveriam executar, mas não executam:
- Através do cmd (apenas com o comando
[start] {arquivo.jar}
); - Dois cliques no .jar ou atalho direto para o mesmo.
Algumas Restrições
Não pretendo utilizar .bat como auxiliar para executar o .jar, pois estou tentando resolver de uma forma que funcione tanto para Windows, como para MAC e também Linux (Não testei).
Poderia resolver esta situação mudando o diretório para algo como a pasta raiz do usuário, porém receio que teremos problemas com permissões.
Alguém tem alguma ideia de como resolver esta questão de execução na área temporária?
Desde já, agradeço!