Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os XBAPs (aplicativos do navegador XAML) combinam recursos de aplicativos Web e aplicativos rich-client. Assim como os aplicativos Web, os XBAPs podem ser implantados em um servidor Web e iniciados pelo Internet Explorer ou Firefox no Windows. Assim como os aplicativos rich-client, os XBAPs podem aproveitar os recursos do WPF. O desenvolvimento de XBAPs também é semelhante ao desenvolvimento de aplicações cliente avançadas. Este tópico fornece uma introdução simples e de alto nível ao desenvolvimento XBAP e descreve onde o desenvolvimento XBAP difere do desenvolvimento de cliente avançado padrão.
Aviso
Os XBAPs exigem que navegadores herdados operem, como o Internet Explorer e versões antigas do Firefox. Esses navegadores mais antigos geralmente não têm suporte no Windows 10 e no Windows 11. Os navegadores modernos não dão mais suporte à tecnologia necessária para aplicativos XBAP devido a riscos de segurança. Plug-ins que habilitam XBAPs não têm mais suporte. Para obter mais informações, consulte Perguntas frequentes sobre oXBAP (aplicativos hospedados por navegador) do WPF.
Este tópico contém as seguintes seções:
Criando um novo aplicativo XAML Browser (XBAP)
A maneira mais simples de criar um novo projeto XBAP é com o Visual Studio. Ao criar um novo projeto, selecione Aplicativo do Navegador WPF na lista de modelos. Para obter mais informações, consulte Como: Criar um Novo Projeto de Aplicativo de Navegador WPF.
Quando você executa o projeto XBAP, ele é aberto em uma janela do navegador em vez de uma janela autônoma. Quando você depura o XBAP do Visual Studio, o aplicativo é executado com permissão de zona da Internet e, portanto, gerará exceções de segurança se essas permissões forem excedidas. Para obter mais informações, consulte Segurança e segurança de confiança parcial do WPF.
Observação
Se você não estiver desenvolvendo com o Visual Studio ou quiser saber mais sobre os arquivos de projeto, consulte Como criar um aplicativo WPF.
Implantando um XBAP
Quando você cria um XBAP, a saída inclui os três seguintes arquivos:
Arquivo | Descrição |
---|---|
Executável (.exe) | Isso contém o código compilado e tem uma extensão de .exe. |
Manifesto do aplicativo (.manifest) | Isso contém metadados associados ao aplicativo e tem uma extensão .manifest. |
Manifesto de implantação (.xbap) | Esse arquivo contém as informações que o ClickOnce usa para implantar o aplicativo e tem a extensão .xbap. |
Você implanta XBAPs em um servidor Web, por exemplo, o Microsoft Internet Information Services (IIS) 5.0 ou versões posteriores. Você não precisa instalar o .NET Framework no servidor Web, mas precisa registrar os tipos de MIME (Extensões de Email de Internet Multiuso) do WPF e extensões de nome de arquivo. Para obter mais informações, consulte Configurar o IIS 5.0 e o IIS 6.0 para implantar aplicativos WPF.
Para preparar o XBAP para implantação, copie o .exe e os manifestos associados para o servidor Web. Crie uma página HTML que contenha um hiperlink para abrir o manifesto de implantação, que é o arquivo que tem a extensão .xbap. Quando o usuário clica no link para o arquivo .xbap, o ClickOnce manipula automaticamente a mecânica de baixar e iniciar o aplicativo. O código de exemplo a seguir mostra uma página HTML que contém um hiperlink que aponta para um XBAP.
<html>
<head></head>
<body>
<a href="XbapEx.xbap">Click this link to launch the application</a>
</body>
</html>
Você também pode hospedar um XBAP no quadro de uma página da Web. Crie uma página da Web com um ou mais quadros. Defina a propriedade de origem de um quadro para o arquivo de manifesto de implantação. Se você quiser usar o mecanismo interno para se comunicar entre a página da Web de hospedagem e o XBAP, você deverá hospedar o aplicativo em um quadro. O código de exemplo a seguir mostra uma página HTML com dois quadros, a origem do segundo quadro é definida como um XBAP.
<html>
<head>
<title>A page with frames</title>
</head>
<frameset cols="50%,50%">
<frame src="introduction.htm">
<frame src="XbapEx.xbap">
</frameset>
</html>
Limpar XBAPs armazenados em cache
Em algumas situações após a recompilação e início do XBAP, você pode descobrir que uma versão anterior do XBAP está aberta. Por exemplo, esse comportamento pode ocorrer quando o número de versão do assembly XBAP é estático e você inicia o XBAP na linha de comando. Nesse caso, como o número de versão entre a versão armazenada em cache (a versão que foi iniciada anteriormente) e a nova versão permanece a mesma, a nova versão do XBAP não é baixada. Em vez disso, a versão armazenada em cache é carregada.
Nessas situações, você pode remover a versão armazenada em cache usando o comando Mage (instalado com o Visual Studio ou o SDK do Windows) no prompt de comando. O comando a seguir limpa o cache do aplicativo.
Mage.exe -cc
Esse comando garante que a versão mais recente do seu XBAP seja iniciada. Quando você depura seu aplicativo no Visual Studio, a versão mais recente do seu XBAP deve ser iniciada. Em geral, você deve atualizar o número de versão da implantação com cada build. Para obter mais informações sobre o Mage, consulte Mage.exe (Ferramenta de Geração e Edição de Manifesto).
Comunicando-se com a página da Web do host
Quando o aplicativo é hospedado em um quadro HTML, você pode se comunicar com a página da Web que contém o XBAP. Você faz isso recuperando a HostScript propriedade de BrowserInteropHelper. Essa propriedade retorna um objeto de script que representa a janela HTML. Em seguida, você pode acessar as propriedades, os métodos e os eventos no objeto da janela usando a sintaxe de ponto regular. Você também pode acessar métodos de script e variáveis globais. O exemplo a seguir mostra como recuperar o objeto de script e fechar o navegador.
private void Button_Click(object sender, RoutedEventArgs e)
{
// Retrieve the script object. The XBAP must be hosted in a frame or
// the HostScript object will be null.
var scriptObject = BrowserInteropHelper.HostScript;
// Call close to close the browser window.
scriptObject.Close();
}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
' Retrieve the script object The XBAP must be hosted in a frame or
' the HostScript object will be null.
Dim scriptObject = BrowserInteropHelper.HostScript
' Call close to close the browser window.
scriptObject.Close()
End Sub
Depurando XBAPs que usam HostScript
Se o XBAP usar o objeto HostScript para se comunicar com a janela HTML, você deve especificar duas configurações para executar e depurar o aplicativo no Visual Studio. O aplicativo deve ter acesso ao site de origem e você deve iniciar o aplicativo com a página HTML que contém o XBAP. As etapas a seguir descrevem como verificar essas duas configurações:
No Visual Studio, abra as propriedades do projeto.
Na guia Segurança, clique em Avançado.
A caixa de diálogo Configurações de Segurança Avançada é exibida.
Verifique se a caixa de seleção Conceder ao aplicativo o acesso ao site de origem está marcada e clique em OK.
Na guia Depurar, selecione a opção Iniciar navegador com URL e especifique a URL para a página HTML que contém o XBAP.
No Internet Explorer, clique no botão Ferramentas e selecione Opções da Internet.
A caixa de diálogo Opções da Internet é exibida.
Clique na guia Avançado .
Na lista Configurações em Segurança, marque a caixa de seleção Permitir que o conteúdo ativo seja executado em arquivos em Meu Computador .
Clique em OK.
As alterações entrarão em vigor depois que você reiniciar o Internet Explorer.
Cuidado
Habilitar o conteúdo ativo no Internet Explorer pode colocar seu computador em risco. Se você não quiser alterar as configurações de segurança do Internet Explorer, poderá iniciar a página HTML de um servidor e anexar o depurador do Visual Studio ao processo.
Considerações sobre segurança XBAP
Os XBAPs normalmente são executados em uma sandbox de segurança com confiança parcial, restrita ao conjunto de permissões da zona da Internet. Consequentemente, sua implementação deve dar suporte ao subconjunto de elementos do WPF com suporte na zona da Internet ou você deve elevar as permissões do aplicativo. Para obter mais informações, consulte Segurança.
Quando você usa um WebBrowser controle em seu aplicativo, o WPF instancia internamente o controle ActiveX do WebBrowser nativo. Quando seu aplicativo é um XBAP de confiança parcial em execução no Internet Explorer, o controle ActiveX é executado em um thread dedicado do processo do Internet Explorer. Portanto, as seguintes limitações se aplicam:
O WebBrowser controle deve fornecer um comportamento semelhante ao navegador do host, incluindo restrições de segurança. Algumas dessas restrições de segurança podem ser controladas por meio das configurações de segurança do Internet Explorer. Para obter mais informações, consulte Segurança.
Uma exceção é gerada quando um XBAP é carregado entre domínios em uma página HTML.
A entrada está em um thread separado do WPF WebBrowser, portanto, a entrada do teclado não pode ser interceptada e o estado IME não é compartilhado.
O tempo ou a ordem de navegação podem ser diferentes devido ao controle ActiveX em execução em outro thread. Por exemplo, navegar até uma página não é necessariamente cancelado ao iniciar uma nova solicitação de navegação.
Um controle ActiveX personalizado pode ter problemas de comunicação, pois o aplicativo WPF está em execução em um thread separado.
MessageHook não é gerado porque HwndHost não pode subclassificar uma janela executada em outro encadeamento ou processo.
Criando um XBAP Full-Trust
Se o XBAP exigir confiança total, você poderá alterar seu projeto para habilitar essa permissão. As etapas a seguir descrevem como habilitar a confiança total:
No Visual Studio, abra as propriedades do projeto.
Na guia Segurança, selecione a opção Este é um aplicativo de confiança total.
Essa configuração faz as seguintes alterações:
No arquivo de projeto, o valor do
<TargetZone>
elemento é alterado paraCustom
.No manifesto do aplicativo (app.manifest), um
Unrestricted="true"
atributo é adicionado ao elemento 'PermissionSet .<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
Implantando um Full-Trust XBAP
Quando você implanta um XBAP de confiança total que não segue o modelo de Implantação Confiável do ClickOnce, o comportamento quando o usuário executa o aplicativo dependerá da zona de segurança. Em alguns casos, o usuário receberá um aviso ao tentar instalá-lo. O usuário pode optar por continuar ou cancelar a instalação. A tabela a seguir descreve o comportamento do aplicativo para cada zona de segurança e o que você precisa fazer para que o aplicativo receba total confiança.
Zona de Segurança | Comportamento | Obtendo total confiança |
---|---|---|
Computador local | Confiança total automática | Nenhuma ação é necessária. |
Intranet e sites confiáveis | Aviso para confiança total | Assine o XBAP com um certificado para que o usuário veja a origem no prompt. |
Internet | Falha com "Confiança não concedida" | Assinar o XBAP com um certificado. |
Observação
O comportamento descrito na tabela anterior é para XBAPs de confiança total que não seguem o modelo de Implantação Confiável ClickOnce.
É recomendável que você use o modelo de Implantação Confiável do ClickOnce para implantar um XBAP de confiança total. Esse modelo permite que seu XBAP seja concedido confiança total automaticamente, independentemente da zona de segurança, para que o usuário não seja solicitado. Como parte desse modelo, você deve assinar seu aplicativo com um certificado de um publicador confiável. Para obter mais informações, consulte Visão geral da implantação de aplicativo confiável e introdução à assinatura de código.
Considerações sobre o desempenho do tempo de início do XBAP
Um aspecto importante do desempenho do XBAP é o tempo de inicialização. Se um XBAP for o primeiro aplicativo WPF a ser carregado, o tempo de inicialização a frio poderá ser de dez segundos ou mais. Isso ocorre porque a página de progresso é renderizada pelo WPF, e tanto o CLR quanto o WPF precisam ser iniciados do zero para exibir o aplicativo.
A partir do .NET Framework 3.5 SP1, o tempo de inicialização a frio do XBAP é reduzido ao exibir uma página de progresso sem gerenciamento no início do ciclo de implantação. A página de progresso aparece quase imediatamente depois que o aplicativo é iniciado, pois é exibido pelo código de hospedagem nativo e renderizado em HTML.
Além disso, o aumento da simultaneidade na sequência de download do ClickOnce melhora o tempo de inicialização em até dez por cento. Depois que o ClickOnce baixa e valida manifestos, o download do aplicativo é iniciado e a barra de progresso começa a ser atualizada.
Consulte também
.NET Desktop feedback