Criar servico windows com instalador

10 respostas
guilhermetonetto

Aew pessoal,

preciso criar um serviço no windows que quando o windows starta já starta minha aplicação, mas pesquisei e só achei como fazer através do proprio windows mesmo, tipo este sistema vai ser para mais de 600 users , dae pensei que pudesse ser no instalador, estou usando o Inno Setup , mas não achei nada…

alguem ja fez isso? derrepente pela aplicação ja cria um serviço com o meu .jar

[]'s

10 Respostas

T

a) Para a aplicação iniciar sem tela nem nada (como um serviço do Windows), você pode usar um wrapper como o JavaService ou o Commons Daemon. Procure aqui no fórum. Atenção: quando uma aplicação é um serviço do Windows você não pode ter absolutamente NENHUMA ENTRADA interativa (nada de console ou telas gráficas).
b) Se a sua aplicação é para iniciar quando o usuário se logar, como o Limewire e outros softwares Java que usam tray icons e ficam residentes, é melhor pôr um atalho no Start -> Programs -> Startup (veja como é que é o nome disso no Windows em português).

guilhermetonetto

minha aplicação starta como systray , mas só quando da um duplo clique no .jar…

queria que depois que o usuario logar no windows , ela já ficasse la do lado do relógio

T

É relativamente fácil.
Experimente criar um atalho para esse jar no Start -> Programs -> Startup (não sei como é que é o nome disso no seu Windows em português), efetue o logout e o login, e veja se ele faz direitinho.
Se isso funcionar, crie o atalho usando o Inno Setup ou o seu instalador preferido.

guilhermetonetto

eu fiz este teste , e funcionou certo, mas não consegui fazer o instalador criar um atalho la, vc usa algum instalador que vc sabe que faz isso para me indicar??

outra coisa , vc ja usou a lib systray??

[]'s

T

É que você não leu direito o FAQ do Inno Setup. Lá explica direitinho:

http://www.jrsoftware.org/iskb.php?startup

guilhermetonetto

bah valeu meu brother, obrigado mesmo …

se não pedir mto , poderia me esclarece mais uma duvida ,

tipo no systray , para ele funcionar direito ele precisa de uma .dll , systray4j.dll , esta dll precisa estar na mesma pasta do .jar pra ela funcionar, dae quando o cliente cria um atalho no desktop , ele nao funciona pois nao acha a dll , se eu coloco a dll no system32 ou coloco a dll no desktop junto , dae funciona…

tentei da um System.loadLibrary() nela , mas não acha igual … porque é chato o cliente ter que colar a dll em um lugar…

vc tem alguma ideia de como eu escapar disso??

desculpa o encomodo ae brother

[]'s

T

A resposta é não, e é por isso que você vai usar o Inno Setup para copiar a DLL para o local adequado (não junto do seu JAR, mas no \windows\system32 ou em algum outro lugar).

guilhermetonetto

sim , é a unica saida que eu vi , mas dae eu caio em outro problema …

os caminhos até o system32, mudam de versões de windows :?

dae pensei bom vou dizer na minha aplicação que o systray4j.dll ta na pasta da minha aplicação , mas nao adianta , pra funcionar no desktop o atalho só se ele tiver junto no desktop ou no system32

mas valeu brother []'s

correainfo

guilhermetn3

Se não tem nenhum motivo especial para utilizar a API com a DLL. E se vc esta utilizando jdk 1.6.
Entao vc pode usar o Tray da jdk mesmo tem um exemplo abaixo…

import javax.swing.*;
import java.awt.*;

public class BasicTray {
  public static void main(String args[]) {
    Runnable runner = new Runnable() {
      public void run() {
        if (SystemTray.isSupported()) {
          SystemTray tray = SystemTray.getSystemTray();
          Image image = Toolkit.getDefaultToolkit().getImage("gifIcon.gif");
          PopupMenu popup = new PopupMenu();
          MenuItem item = new MenuItem("A MenuItem");
          popup.add(item);
          TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);
          try {
            tray.add(trayIcon);
          } catch (AWTException e) {
            System.err.println("Can't add to tray");
          }
        } else {
          System.err.println("Tray unavailable");
        }
      }
    };
    EventQueue.invokeLater(runner);
  }
}
guilhermetonetto

correainfo

valeuu , mas eu consegui resolver pelo Inno Setup mesmo , e ja vou deixar o tutorial que me ajudou um monte a resolver…

se alguem tiver este problema ja pode resolver com este tutorial…

http://www.mephost.com/software/help/mpist14/constantes.htm

[]'s

Criado 27 de fevereiro de 2008
Ultima resposta 27 de fev. de 2008
Respostas 10
Participantes 3