Como criar um instalador, onde eu consiga fazer com que ele carregue alguns arquivos na pasta JRE?

6 respostas
P

Pessoal,

Estou usando aquela API de comunicação serial da SUN (“JAVAX.COMM”), mas quando vou utilizar a comunicação serial, eu preciso carregar dois arquivos dessa API na pasta do “JRE”, um é uma “dll” que vai na pasta “bin” do “JRE” e o outro é um arquivo “.properties” que vai na pasta “lib”. Quando realizo a cópia desses arquivos o sistema funciona OK, mas se acaso um dos dois não estiverem nessas pastas não consigo realizar a comunicação através da API.

Meu problema é como criar um instalador da minha aplicação que me permita colocar esses arquivos nos seus respectivos diretórios. Estou utilizando o programa “Install Creator” para criar o instalador, mas eu não encontrei nele essa funcionalidade, alguém sabe me indicar algum instalador que permita realizar essa operação?

Ou alguém sabe alguma forma de eu deixar esses dois arquivos atrelados ao diretório da minha aplicação ao invés deles ficarem atrelados ao diretório do “JRE”?

Agradeço por qq ajuda.

Até +…
Paulo D.

6 Respostas

LuizLG

Eae

Dá uma olhada neste tópico, que fala sobre o IZPack http://www.guj.com.br/posts/list/77115.java.

Quanto ao .properties, vc poderia mantê-lo no diretório raiz da aplicação e carregá-lo com algo do tipo:

File fileProp = new File("seuArquivo.properties"); Properties props = new Properties(); FileInputStream fis = null; try { fis = new FileInputStream(fileProp); //lê os dados que estão no arquivo props.load(fis); fis.close(); } catch (IOException ex) { ex.printStackTrace(); }

P

LuizLG,

Não deu certo cara.

Fiz o trecho de código que você citou, mas não funcionou na minha aplicação.
Na verdade o que eu fiz foi fazer o trecho de código e retirar o arquivo “.properties” da pasta “lib” do “JRE”, mas mantive a “dll” na pasta “bin” e mesmo assim não funcionou.

Você tem uma outra dica do que pode ser?

Até +…
Paulo D.

pyro

Creio que para a Javacomm o arquivo properties não precisa estar embutido na sua aplicação, é preciso estar dentro da pasta de instalação do Java, é parte dos requisitos para a API funcionar.

P

Isso mesmo. O problema é exatamente este, como eu faço para direcionar esses arquivos (".dll" e “.properties”) para pasta de instalação do Java no PC do meu cliente, através do instalador do meu aplicativo?

Até +…
Paulo D.

LuizLG

Acabei de verificar aqui e o IZPack consegue pegar variáveis de sistema.
Dá uma olhada no tópico que te passei, para colocar os arquivos na pasta desejada basta acrescentar:

<file src="seuArquivo.properties" targetdir="$JAVA_HOME/lib"/> <file src="seuOutroArquivo.dll" targetdir="$JAVA_HOME/bin"/>

Lembrando que precisa ter a permissão de escrita necessária…

P

A solução encontrada para solução do problema foi:

Class classWin32Driver = null;
    try {
      classWin32Driver = this.getClass().getClassLoader().loadClass("com.sun.comm.Win32Driver");
      CommDriver driver = (CommDriver) classWin32Driver.newInstance();
      driver.initialize();    
    } catch (Exception e1) {
      DialogMensagem.DialogErro("Arquivo de comunicação com a serial não pôde ser carregado.");
    }

No trecho de código acima na linha 03 a string que estou passando para o método “loadClass” é o conteúdo do meu arquivo “.properties”.
O arquivo “.dll” eu coloquei na raíz do meu projeto e daí já era, carreguei o driver e inicializei ele, depois tudo funcionou perfeitamente, independentemente de onde está instalado a JRE e de qual instalador eu vou utilizar.
No meu caso eu estou utilizando o “Install Creator” para gerar o instalador, ele é bem simples de usar e eficiente.
Fica aí a solução proposta pra quem estiver utilizando a API de comunicação serial da SUN.

Até +…
Paulo D.

Criado 17 de dezembro de 2007
Ultima resposta 18 de dez. de 2007
Respostas 6
Participantes 3