// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Encapsulamento Nativo no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Encapsulamento Nativo no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Encapsulamento Nativo no NetBeans IDE

Escrito por Petr Somol e Alyona Stashkova

O encapsulamento nativo foi apresentado pela primeira vez como parte do JavaFX 2.2 SDK, permitindo que você encapsule uma aplicação como um _encapsulamento nativo_ e, em seguida, instale e execute a aplicação sem nenhuma dependência em um sistema JRE ou JavaFX SDK. Em seguida, ele se tornará utilizável também para projetos Java SE.

O encapsulamento nativo não altera o modelo de implantação de sua aplicação: ele usa a aplicação como está, encapsula com runtime de Java e produz um instalador que é comum para o sistema operacional que você está usando. O ponto principal é criar uma única ação não importando o runtime de Java que os usuários têm na máquina-alvo. Você pode usar um instalador e executá-lo em uma máquina na qual não há rastreamento de Java. Isso instalará a aplicação e os bits de runtime Java necessários. O tamanho desses instaladores é bem grande porque mesmo uma aplicação "Hello world" transportará uma parte grande de artefatos de runtime Java.

Neste tutorial, você criará um instalador  ``EXE``  de uma aplicação Java SE e um instalador  ``MSI``  para uma aplicação JavaFX para o sistema operacional Windows, com base nas aplicações de amostra encapsuladas com o IDE.

*Observação:*

* Os instaladores  ``EXE``  e  ``MSI``  que você obtém são específicos da plataforma; eles só serão executados em um sistema compatível com a plataforma Java de destino cujos pacotes  ``EXE`` / ``MSI``  instaláveis foram criados. (Por exemplo, se um instalador  ``EXE``  ou  ``MSI``  foi criado em uma máquina com um JDK de 64 bits instalado, ele deverá ser executado em uma máquina com Windows de 64 bits instalado).
* No Windows, ambas as aplicações são instaladas no diretório  ``C:\Users\<username>\AppData\Local\``  e estão disponíveis no menu Iniciar.


image::images/netbeans-stamp-80-74.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.4 ou 8.0"]


*Para seguir este tutorial, são necessários os recursos e o software a seguir.*

|===
|Software ou Recurso |Versão Necessária 

|link:http://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.4 ou 8.0 

|link:http://www.oracle.com/technetwork/java/javafx/downloads/index.html[+JDK (Java Development Kit)+] |7 atualização 25 (ou mais recente) ou 8 

|link:http://www.jrsoftware.org/[+Inno Setup+] |5.5 ou versão mais recente 

|link:http://wixtoolset.org/[+WiX+] |3.7 ou versão mais recente 
|===


== Instalando e Adicionando as Ferramentas Necessárias ao Caminho

Para usar o suporte do IDE para encapsulamento nativo, as seguintes ferramentas adicionais precisam ser instaladas:

* O link:http://www.jrsoftware.org/[+Inno Setup 5.5+] (ou uma versão mais recente) para produzir instaladores EXE no Windows é obrigatório.
* O link:http://wixtoolset.org/[+WiX 3.7+] (ou uma versão mais recente) para produzir instaladores MSI no Windows é obrigatório.

*Observação:* para obter uma lista de ferramentas obrigatórias para criar instaladores para diferentes plataformas, consulte "link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG2508[+Encapsulando uma Aplicação como um Instalador Nativo+]" em _Desenvolvendo Aplicações com o NetBeans IDE_.

*Para instalar o Inno Setup:*

1. Faça Download do  ``ispack-5.5.3.exe``  na página link:http://www.jrsoftware.org/isdl.php[+Downloads do Inno Setup+]
2. Clique duas vezes no arquivo para iniciar o instalador.
3. Aceite o contrato de licença do Inno Setup e clique em Próximo.
4. Siga as instruções do assistente de instalação para instalar o Inno Setup.

*Para instalar o WiX:*

1. Faça download do  ``wix37.exe``  na página link:http://wix.codeplex.com/releases/view/99514[+WiX Toolset - Download+].
2. Clique duas vezes no arquivo para iniciar o instalador.
3. Siga as instruções do assistente de instalação para instalar o WiX.

*Para adicionar o Inno Setup e/ou WiX à variável Path do sistema:*

1. No Windows 7, selecione Iniciar > Computador > Propriedades do Sistema > Configurações avançadas do sistema.
2. Selecione a guia Avançado e clique no botão Variáveis de Ambiente.
3. No painel Variáveis do Sistema, clique duas vezes na variável Path.
4. Na caixa de diálogo Editar Variável do Sistema, adicione um ponto-e-vírgula seguido de um novo caminho ao campo Valor da variável (por exemplo,  ``C:\Arquivos de Programa (x86)\Inno Setup 5 ``  ou  ``C:\Arquivos de Programa (x86)\WiX Toolset v3.6\bin`` ).
5. Clique em OK para fechar todas as caixas de diálogo abertas.

*Observações:*

* Para verificar se a ferramenta instalada está no Path, abra a janela Prompt de Comando e digite  ``iscc.exe``  para Inno Setup ou  ``candle.exe``  para WiX. (Se o Prompt de Comando for fechado instantaneamente, tente especificar  ``cmd.exe /c cmd.exe /k iscc.exe``  ou  ``cmd.exe /c cmd.exe /k candle.exe``  respectivamente.)
A figura a seguir mostra o que o Prompt de Comando deve exibir, caso o Inno Setup seja adicionado à variável Path do sistema.

[.feature]
--
image::images/cmd_small.png[role="left", link="images/cmd.png"]
--

* Certifique-se de que o IDE tenha sido reiniciado após as ferramentas serem adicionadas à variável Path do sistema.


== Encapsulamento Nativo nos Projetos Java SE

Para utilizar o suporte de encapsulamento nativo no IDE, é necessário concluir o seguinte:

* <<createse,criar um projeto IDE>>
* <<enable,ativar as ações de encapsulamento nativo no projeto>>
* <<buildse,limpar e construir o projeto>>
* <<instse,encapsular uma aplicação em um instalador>>


=== Configurando um Projeto Java SE

Antes de encapsular uma aplicação em um instalador, é necessário criar uma aplicação.

Você criará um novo projeto Java SE com o exemplo do jogo de Anagramas que é enviado com o NetBeans IDE.

*Para criar um projeto do IDE:*

1. No IDE, escolha Arquivo > Novo Projeto.
2. No assistente Novo Projeto, expanda a categoria Amostras e selecione Java.
3. Escolha o Jogo de Anagramas na lista Projetos. Em seguida, clique em Próximo.

[.feature]
--
image::images/new_javase_prj_small.png[role="left", link="images/new_javase_prj.png"]
--


[start=4]
. No painel Nome e Local, deixe os valores default para os campos Nome do Projeto e Localização do Projeto.

[start=5]
. Clique em Finalizar.
O IDE cria e abre o projeto Java SE.

Para testar se o projeto criado funciona, execute-o escolhendo Executar > Executar Projeto no menu principal.
A aplicação Anagramas deve ser iniciada e exibida em sua máquina.

image::images/anagrams.png[]


=== Ativando Encapsulamento Nativo no IDE

As ações do encapsulamento nativo são desativadas no IDE, por default.

Clique com o botão direito do mouse no projeto AnagramGame na janela Projetos, para verificar as ações disponíveis para o projeto Java SE criado no IDE: não há ações relacionadas ao pacote no menu de contexto do projeto.

image::images/context_wo_pkg.png[]

*Para ativar as ações de encapsulamento nativo do projeto:*

1. Clique com o botão direito do mouse no nó do projeto na janela Projetos e selecione as Propriedades no menu de contexto.
2. Na caixa de diálogo Propriedades do Projeto, escolha a categoria Implantação e selecione Ativar Ações de Encapsulamento Nativo na opção Menu do Projeto.

[.feature]
--
image::images/enable_native_pkg_small.png[role="left", link="images/enable_native_pkg.png"]
--


[start=3]
. Clique em OK. 
Um comando Encapsular como é adicionado ao menu de contexto do projeto.

image::images/pkg_enabled.png[]


=== Construindo uma Aplicação

É hora de limpar e construir sua aplicação para implantação.

*Para limpar e construir seu projeto:*

* Escolha Executar > Limpar e Construir Projeto do menu principal.
O IDE exibe os resultados na janela de Saída.

[.feature]
--
image::images/output_small.png[role="left", link="images/output.png"]
--

Uma pasta  ``dist``  que contém um arquivo  ``jar``  é criada na pasta do projeto.


=== Criando um Instalador  ``EXE`` 

A aplicação agora pode ser encapsulada em um instalador para Windows.

*Para construir um instalador  ``EXE`` :*

* Clique com o botão direito do mouse no projeto AnagramGame e escolha Encapsular como > Instalador EXE do menu de contexto.

*Observação:* o IDE só criará um instalador  ``EXE``  se o Inno Setup for <<tool,instalado e adicionado à variável Path do sistema>>.

O IDE exibe o andamento e o resultado do processo de encapsulamento na janela de Saída.

[.feature]
--
image::images/output_se_exe_small.png[role="left", link="images/output_se_exe.png"]
--

*Observação:* o IDE primeiro registra o progresso e, em seguida, durante um período verifica como se nada estivesse acontecendo - é exatamente neste momento em que o Inno Setup está trabalhando em segundo plano. Demora um pouco para o encapsulamento ser concluído.

Quando o instalador  ``EXE``  estiver pronto, ele será colocado no diretório  ``AnagramGame/dist/bundles/`` .

image::images/anagram_exe.png[]


== Encapsulamento de Aplicação Autocontida nos Projetos JavaFX

Para criar uma aplicação JavaFX instalável usando o suporte ao encapsulamento nativo no IDE, é necessário concluir o seguinte:

* <<createfx,criar um projeto JavaFX no IDE>>
* <<enablefx,ativar o suporte ao encapsulamento nativo para o projeto>>
* <<buildfx,limpar e construir uma aplicação JavaFX>>
* <<instfx,construir uma aplicação JavaFX instalável>>


=== Criando um Projeto JavaFX

Você começa a criação de um projeto JavaFX usando o projeto de amostra BrickBreaker encapsulado com o IDE.

*Para criar um projeto JavaFX no IDE:*

1. No IDE, escolha Arquivo > Novo Projeto.
2. No assistente Novo Projeto, expanda a categoria Amostras e selecione JavaFX.
3. Escolha BrickBreaker na lista Projetos. Em seguida, clique em Próximo.
4. No painel Nome e Local, deixe os valores default para os campos Nome do Projeto, Localização do Projeto e Plataforma JavaFX.

[.feature]
--
image::images/new_javafx_prj_small.png[role="left", link="images/new_javafx_prj.png"]
--


[start=5]
. Clique em Finalizar. 
O projeto JavaFX do BrickBreaker é exibido na janela Projetos no IDE.

Para testar se o projeto criado funciona, execute-o escolhendo Executar > Executar Projeto (BrickBreaker) no menu principal.
A aplicação Brick Breaker deve ser iniciada e exibida em sua máquina.

[.feature]
--
image::images/brickbreaker_small.png[role="left", link="images/brickbreaker.png"]
--


=== Ativando Encapsulamento Nativo no Projeto

Para usar o suporte ao encapsulamento nativo no IDE para seu projeto, é necessário ativá-lo primeiro.

Se clicar com o botão direito no mouse no projeto Brick Breaker, você não verá nele ações relacionadas a encapsulamento nativo.

image::images/javafx_wo_pkg.png[]

*Para ativar as ações de encapsulamento nativo no menu de contexto do projeto:*

1. Clique com o botão direito do mouse no nó do projeto na janela Projetos e selecione as Propriedades no menu de contexto.
2. Na caixa de diálogo Propriedades do Projeto, escolha a categoria Construir e selecione a opção Ativar Encapsulamento Nativo.

[.feature]
--
image::images/enable_native_pkg_fx_small.png[role="left", link="images/enable_native_pkg_fx.png"]
--


[start=3]
. Clique em OK. 
A opção Encapsular como item é adicionada ao menu de contexto do projeto.

image::images/pkg_fx_enabled.png[]


=== Construindo uma Aplicação

Sua aplicação JavaFX agora está pronta para ser limpa e construída.

*Para limpar e construir seu projeto:*

* Escolha Executar > Limpar e Construir Projeto do menu principal.
O IDE exibe os resultados na janela de Saída.

*Observação:* se a construção for bem-sucedida, mas o IDE exibir  ``advertência: [opções] caminho de classe de bootstrap não definido com -código-fonte 1.6``  na janela de Saída, o formato de Código-fonte/Binário precisará ser definido como JDK 8 nas propriedades do projeto e o projeto precisa ser limpo e construído novamente, como segue:

1. Clique com o botão direito do mouse no projeto BrickBreaker na janela Projetos e escolha Propriedades.
2. Na caixa de diálogo Propriedades do projeto, selecione a categoria Executar Códigos-fontes.
3. Defina o formato Código-fonte/Binário para JDK 8 e clique em OK.
4. Clique com o botão direito do mose na janela Projetos e escolha Limpar e Construir no menu de contexto.


=== Criando um Instalador  ``MSI`` 

A aplicação agora pode ser encapsulada em um pacote instalável específico do Windows.

*Para construir um instalador  ``MSI`` :*

* Clique com o botão direito do mouse no projeto BrickBreaker e escolha Encapsular como > Instalador MSI do menu de contexto.

*Observação:* o IDE cria um instalador  ``MSI``  somente se WiX for <<tool,instalada e adicionada à variável Path do sistema>>.

O IDE exibe o andamento e o resultado do processo de encapsulamento na janela de Saída.

[.feature]
--
image::images/output_fx_msi_small.png[role="left", link="images/output_fx_msi.png"]
--

*Observação:* o IDE primeiro registra o progresso e, em seguida, durante um período verifica como se nada estivesse acontecendo - é exatamente neste momento em que a WiX está trabalhando em segundo plano. Demora um pouco para o encapsulamento ser concluído.

A aplicação JavaFX instalável está localizada no diretório  ``BrickBreaker/dist/bundles/`` .

image::images/brickbreaker_msi.png[]


== [[Verificando as Aplicações Instaláveis]] 

Quando os instaladores de  ``AnagramGame-1.0.exe``  e  ``BrickBreaker-1.0.msi``  forem concluídos, você precisará em qual diretório as aplicações Anagram e BrickBreaker foram instaladas.

*Para verificar os instaladores:*

1. Procure o arquivo do instalador ( ``AnagramGame-1.0.exe``  ou  ``BrickBreaker-1.0.msi`` ) em seu disco rígido.
2. Clique duas vezes para executar o instalador.

As duas aplicações devem ser instaladas no diretório  ``C:\Users\<username>\AppData\Local\``  e devem estar disponíveis no menu Iniciar.


== Consulte Também

* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG2508[+Encapsulando uma Aplicação como um Instalador Nativo+] em _Desenvolvendo Aplicações com o NetBeans IDE_
* link:http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm[+Implantando Aplicações JavaFX: Encapsulamento da Aplicação Autocontida+]
* link:http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html[+Encapsulando uma Aplicação Java para Distribuição em uma Máquina+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Native%20Packaging%20In%20NetBeans%20IDE[+Enviar Feedback neste Tutorial+]


link:../../trails/matisse.html[+Voltar à Trilha do Aprendizado+]

