Boa tarde comunidade, estou trabalhando em um projeto de um bloco de notas em java que abra arquivos txt e outros. O problema é que eu queria uma forma de fazer meu programa aparecer entre as sugestões do sistema para ser o programa padrão para abrir arquivos txt, e no caso do usuário desejar que seja padrão, o clique duplo no arquivo leve a um método do programa que receba o endereço do arquivo e abra com este arquivo. Alguém sabe de uma maneira de fazer? Grato aos que responderem.
Abra uma linha de comando e digite os seguintes comandos:
assoc /?
ftype /?
Leia a informação que eles mostram.
Acho que desde o Java 1.6 todos os jar são marcados para abrir com o java.exe por padrão.
Então você precisa distribuir sua app em jar e no windows explorer, ferramentas, opções de pasta alterar o .txt do notepad pro seu jar.
Acho que isso resolve de maneira manual.
Funcionando, é possível automatizar a seleção como default, alterando o registro do windows.
No seu jar, precisa setar o parametro main-class no manifest dentro da pasta meta-inf
Ao escolher a opção exportar em um projeto no eclipse, essas opções são sugeridas.
Para fazer isso no windows é necessário adicionar determinadas chaves no registro. Você pode fazer isso via um script de instalação ou mexendo registro manualmente (não sei se existe alguma biblioteca do java para manipular o registro diretamente). Para isso execute as seguintes Operações.
- Abra a chave HKEY_CLASSES_ROOT
- Dentro dela crie uma chave chamada .ExtensaoDoSeuArquivo
- Dentro dessa nova chave crie um valor no formato texto contendo A descrição desse Arquivo, por exemplo “ArquivoTextoJava”
- Volte para raiz HKEY_CLASSES_ROOT e crie uma nova Chave com o valor utilizado no item 4, por exemplo “ArquivoTextoJava”
- Abra essa chave e:
5.1) Dentro dessa chave crie um valor para a descrição do arquivo. Exemplo “Arquivo de Texto para o Editor Java”
5.2) Crie uma outra chave chamada “DefaultIcon” e a abra.
5.2.1)Agora crie um novo valor de texto e adicione o caminho para o icone. Se o caminho do icone apontar para um execútavel ou dll, é necessário indicar qual icone se deseja. Exemplo “C:\Meu Programa\programa.exe,1”
5.3) Volte para a raiz da chave criada no item 4. Adicione agora uma nova pasta chamada “Shell” e abra essa pasta.
5.3.1) Crie dentro dessa chave uma pasta chamada Open e dentro dessa crie uma chave chamada Command
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”
[quote=x@ndy]…
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”[/quote]
Que trabalhão hein
E em Java complica mais ainda, porque não tem um executável. Tem que invocar a JVM, passando o programa Java e mais o argumento que o programa vai usar.
O comando para abrir o arquivo ficaria parecido com esse:
C:\Program Files\Java\jre7_u10\bin\javaw.exe -jar C:\Program Files\NotepadAlternativo\Notepad.jar %1
O que já traz de brinde outro problema, precisaria descobrir o caminho do Java quando estiver configurando o produto.
Por essas e outras é que Java e aplicativos para PC não combinam …
[quote=gomesrod][quote=x@ndy]…
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”[/quote]
Que trabalhão hein
E em Java complica mais ainda, porque não tem um executável. Tem que invocar a JVM, passando o programa Java e mais o argumento que o programa vai usar.
O comando para abrir o arquivo ficaria parecido com esse:
C:\Program Files\Java\jre7_u10\bin\javaw.exe -jar C:\Program Files\NotepadAlternativo\Notepad.jar %1
O que já traz de brinde outro problema, precisaria descobrir o caminho do Java quando estiver configurando o produto.
Por essas e outras é que Java e aplicativos para PC não combinam …[/quote]
Na verdade isso não é restrição do java com um executável seria a mesma coisa. O ideal para isso é usar um instalador!
[quote=gomesrod][quote=x@ndy]…
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”[/quote]
Que trabalhão hein
E em Java complica mais ainda, porque não tem um executável. Tem que invocar a JVM, passando o programa Java e mais o argumento que o programa vai usar.
O comando para abrir o arquivo ficaria parecido com esse:
C:\Program Files\Java\jre7_u10\bin\javaw.exe -jar C:\Program Files\NotepadAlternativo\Notepad.jar %1
O que já traz de brinde outro problema, precisaria descobrir o caminho do Java quando estiver configurando o produto.
Por essas e outras é que Java e aplicativos para PC não combinam …[/quote]
Acredito que não precisemos de toda esta complicação, e sim apenas de um método main que pegue o argumento do endereço e manipule se ele existir.
[quote=Valcides]
Acredito que não precisemos de toda esta complicação, e sim apenas de um método main que pegue o argumento do endereço e manipule se ele existir.[/quote]
Vc não deve ter entendido o que ele quer! Ele quer associar o programa dele com extensões de arquivo do sistema operacional
[quote=x@ndy]Para fazer isso no windows é necessário adicionar determinadas chaves no registro. Você pode fazer isso via um script de instalação ou mexendo registro manualmente (não sei se existe alguma biblioteca do java para manipular o registro diretamente). Para isso execute as seguintes Operações.
- Abra a chave HKEY_CLASSES_ROOT
- Dentro dela crie uma chave chamada .ExtensaoDoSeuArquivo
- Dentro dessa nova chave crie um valor no formato texto contendo A descrição desse Arquivo, por exemplo “ArquivoTextoJava”
- Volte para raiz HKEY_CLASSES_ROOT e crie uma nova Chave com o valor utilizado no item 4, por exemplo “ArquivoTextoJava”
- Abra essa chave e:
5.1) Dentro dessa chave crie um valor para a descrição do arquivo. Exemplo “Arquivo de Texto para o Editor Java”
5.2) Crie uma outra chave chamada “DefaultIcon” e a abra.
5.2.1)Agora crie um novo valor de texto e adicione o caminho para o icone. Se o caminho do icone apontar para um execútavel ou dll, é necessário indicar qual icone se deseja. Exemplo “C:\Meu Programa\programa.exe,1”
5.3) Volte para a raiz da chave criada no item 4. Adicione agora uma nova pasta chamada “Shell” e abra essa pasta.
5.3.1) Crie dentro dessa chave uma pasta chamada Open e dentro dessa crie uma chave chamada Command
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”[/quote]
Fazer isto de forma automatizada é a questão agora. Alguém tem uma sugestão?
[quote=Valcides][quote=x@ndy]Para fazer isso no windows é necessário adicionar determinadas chaves no registro. Você pode fazer isso via um script de instalação ou mexendo registro manualmente (não sei se existe alguma biblioteca do java para manipular o registro diretamente). Para isso execute as seguintes Operações.
- Abra a chave HKEY_CLASSES_ROOT
- Dentro dela crie uma chave chamada .ExtensaoDoSeuArquivo
- Dentro dessa nova chave crie um valor no formato texto contendo A descrição desse Arquivo, por exemplo “ArquivoTextoJava”
- Volte para raiz HKEY_CLASSES_ROOT e crie uma nova Chave com o valor utilizado no item 4, por exemplo “ArquivoTextoJava”
- Abra essa chave e:
5.1) Dentro dessa chave crie um valor para a descrição do arquivo. Exemplo “Arquivo de Texto para o Editor Java”
5.2) Crie uma outra chave chamada “DefaultIcon” e a abra.
5.2.1)Agora crie um novo valor de texto e adicione o caminho para o icone. Se o caminho do icone apontar para um execútavel ou dll, é necessário indicar qual icone se deseja. Exemplo “C:\Meu Programa\programa.exe,1”
5.3) Volte para a raiz da chave criada no item 4. Adicione agora uma nova pasta chamada “Shell” e abra essa pasta.
5.3.1) Crie dentro dessa chave uma pasta chamada Open e dentro dessa crie uma chave chamada Command
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”[/quote]
Fazer isto de forma automatizada é a questão agora. Alguém tem uma sugestão?[/quote]
Como eu mesmo falei use um instalador! Eu uso o Inno Setup e o ISTool que uma interface gráfica para geração dos scripts do Inno Setup.
[quote=x@ndy][quote=gomesrod]
C:\Program Files\Java\jre7_u10\bin\javaw.exe -jar C:\Program Files\NotepadAlternativo\Notepad.jar %1
Na verdade isso não é restrição do java com um executável seria a mesma coisa. O ideal para isso é usar um instalador![/quote]
No script do instalador é possível descobrir onde o Java está instalado? Se for então está tranquilo.
[quote=gomesrod][quote=x@ndy][quote=gomesrod]
C:\Program Files\Java\jre7_u10\bin\javaw.exe -jar C:\Program Files\NotepadAlternativo\Notepad.jar %1
Na verdade isso não é restrição do java com um executável seria a mesma coisa. O ideal para isso é usar um instalador![/quote]
No script do instalador é possível descobrir onde o Java está instalado? Se for então está tranquilo.[/quote]
O instalador permite acessar o registro e por lá da para ver o aonde está instalado, a versão, etc!
[quote=x@ndy][quote=Valcides][quote=x@ndy]Para fazer isso no windows é necessário adicionar determinadas chaves no registro. Você pode fazer isso via um script de instalação ou mexendo registro manualmente (não sei se existe alguma biblioteca do java para manipular o registro diretamente). Para isso execute as seguintes Operações.
- Abra a chave HKEY_CLASSES_ROOT
- Dentro dela crie uma chave chamada .ExtensaoDoSeuArquivo
- Dentro dessa nova chave crie um valor no formato texto contendo A descrição desse Arquivo, por exemplo “ArquivoTextoJava”
- Volte para raiz HKEY_CLASSES_ROOT e crie uma nova Chave com o valor utilizado no item 4, por exemplo “ArquivoTextoJava”
- Abra essa chave e:
5.1) Dentro dessa chave crie um valor para a descrição do arquivo. Exemplo “Arquivo de Texto para o Editor Java”
5.2) Crie uma outra chave chamada “DefaultIcon” e a abra.
5.2.1)Agora crie um novo valor de texto e adicione o caminho para o icone. Se o caminho do icone apontar para um execútavel ou dll, é necessário indicar qual icone se deseja. Exemplo “C:\Meu Programa\programa.exe,1”
5.3) Volte para a raiz da chave criada no item 4. Adicione agora uma nova pasta chamada “Shell” e abra essa pasta.
5.3.1) Crie dentro dessa chave uma pasta chamada Open e dentro dessa crie uma chave chamada Command
5.3.2) Dentro dessa crie uma chave com o caminho para o local do aplicativo com o qual deseja abrir o arquivo. Exemplo: C:\Meu Programa\programa.exe “%1”[/quote]
Fazer isto de forma automatizada é a questão agora. Alguém tem uma sugestão?[/quote]
Como eu mesmo falei use um instalador! Eu uso o Inno Setup e o ISTool que uma interface gráfica para geração dos scripts do Inno Setup.[/quote]
Mas como esta associação ao formato seria feita? Quero dizer, em que parte da criação do instalador.
[quote=Valcides]
Mas como esta associação ao formato seria feita?[/quote]
Ai é com o windows! É essas são as configurações que ele necessita para saber que com qual arquivo um executável deve abrir!
[quote=Valcides]
Mas como esta associação ao formato seria feita? Quero dizer, em que parte da criação do instalador.[/quote]
O instalador é um scritp, você define quais os passos dele e a onde isso deva ficar. Eu pessoalmente faria logo após criar todas as pastas, ao final da instalação.
[quote=x@ndy][quote=Valcides]
Mas como esta associação ao formato seria feita?[/quote]
Ai é com o windows! É essas são as configurações que ele necessita para saber que com qual arquivo um executável deve abrir![/quote]
Agradeço muito por estar respondendo. Mas não me refiro ao executável jar abrir com java, e sim, txt abrir com o aplicativo em jar que criei!
[quote=Valcides][quote=x@ndy][quote=Valcides]
Mas como esta associação ao formato seria feita?[/quote]
Ai é com o windows! É essas são as configurações que ele necessita para saber que com qual arquivo um executável deve abrir![/quote]
Agradeço muito por estar respondendo. Mas não me refiro ao executável jar abrir com java, e sim, txt abrir com o aplicativo em jar que criei![/quote]
Você não entendeu. Essas configurações são para o windows saber com qual executável vai abrir um arquivo. Pode ser txt, .dat, etc. O executável pode ser seu jar, um arquivo .scm, etc.
[quote=x@ndy][quote=Valcides][quote=x@ndy][quote=Valcides]
Mas como esta associação ao formato seria feita?[/quote]
Ai é com o windows! É essas são as configurações que ele necessita para saber que com qual arquivo um executável deve abrir![/quote]
Agradeço muito por estar respondendo. Mas não me refiro ao executável jar abrir com java, e sim, txt abrir com o aplicativo em jar que criei![/quote]
Você não entendeu. Essas configurações são para o windows saber com qual executável vai abrir um arquivo. Pode ser txt, .dat, etc. O executável pode ser seu jar, um arquivo .scm, etc.[/quote]
Então esse script já inseriria as chaves no registro né? Se não for muito incômodo, você poderia postar um trecho aqui só pra ter uma base? Ah, e obrigado pelas respostas
[quote=Valcides][quote=x@ndy][quote=Valcides][quote=x@ndy][quote=Valcides]
Mas como esta associação ao formato seria feita?[/quote]
Ai é com o windows! É essas são as configurações que ele necessita para saber que com qual arquivo um executável deve abrir![/quote]
Agradeço muito por estar respondendo. Mas não me refiro ao executável jar abrir com java, e sim, txt abrir com o aplicativo em jar que criei![/quote]
Você não entendeu. Essas configurações são para o windows saber com qual executável vai abrir um arquivo. Pode ser txt, .dat, etc. O executável pode ser seu jar, um arquivo .scm, etc.[/quote]
Então esse script já inseriria as chaves no registro né? Se não for muito incômodo, você poderia postar um trecho aqui só pra ter uma base? Ah, e obrigado pelas respostas :)[/quote]
Infelizmente não tenho nenhum código disponível no momento, mas a documentação do Inno Setup é muito boa e existem muita informação na internet
Muito obrigado pelas respostas, ajudaram bastante!