Publicar um aplicativo WPF com estilos visuais habilitados
Os estilos visuais permitem que a aparência de controles comuns seja alterada com base no tema escolhido pelo usuário. Por padrão, os estilos visuais não são habilitados para aplicativos de Windows Presentation Foundation (WPF), portanto, você deve habilitá-los manualmente. No entanto, habilitar estilos visuais para um aplicativo WPF e, em seguida, publicar a solução causa um erro. Este tópico descreve como resolver esse erro e o processo de publicação de um aplicativo WPF com estilos visuais habilitados. Para obter mais informações sobre estilos visuais, consulte Visão geral de estilos visuais. Para obter mais informações sobre a mensagem de erro, consulte Solucionar problemas de erros específicos em implantações do ClickOnce.
Para resolver o erro e publicar a solução, você deve executar as seguintes tarefas:
Insira o arquivo de manifesto no arquivo executável da solução publicada.
Assine os manifestos de aplicativo e implantação.
Em seguida, você pode mover os arquivos publicados para o local a partir do qual deseja que os usuários finais instalem o aplicativo.
Publicar a solução sem estilos visuais habilitados
Verifique se o projeto não tem estilos visuais habilitados. Primeiro, verifique o arquivo de manifesto do seu projeto para obter o XML a seguir. Em seguida, se o XML estiver presente, inclua o XML com uma marca de comentário.
Por padrão, os estilos visuais não estão habilitados.
<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency>
Os procedimentos a seguir mostram como abrir o arquivo de manifesto associado ao seu projeto.
Para abrir o arquivo de manifesto em um projeto do Visual Basic
Na barra de menus, escolha Projeto, ProjectName Propriedades, em que ProjectName é o nome do projeto WPF.
As páginas de propriedade do seu projeto WPF aparecem.
Na guia Aplicativo, escolha Exibir Configurações do Windows.
O arquivo app.manifest é aberto no Editor de códigos.
Para abrir o arquivo de manifesto em um projeto C#
Na barra de menus, escolha Projeto, ProjectName Propriedades, em que ProjectName é o nome do projeto WPF.
As páginas de propriedade do seu projeto WPF aparecem.
Na guia Aplicativo, anote o nome que aparece no campo de manifesto. Esse é o nome do manifesto associado ao seu projeto.
Observação
Se Inserir manifesto com configurações padrão ou Criar aplicativo sem manifesto aparecer no campo de manifesto, os estilos visuais não serão habilitados. Se o nome de um arquivo do manifesto aparecer no campo de manifesto, prossiga para a próxima etapa neste procedimento.
Em Gerenciador de Soluções, escolha Mostrar Todos os Arquivos.
Esse botão mostra todos os itens do projeto, incluindo aqueles que foram excluídos e aqueles que normalmente estão ocultos. O arquivo de manifesto aparece como um item do projeto.
Faça a compilação e a publicação da sua solução. Para obter mais informações sobre como publicar a solução, consulte Como publicar um aplicativo ClickOnce usando o Assistente de Publicação.
Criar um arquivo de manifesto
Cole o XML a seguir em um arquivo do Bloco de Notas.
Esse XML descreve o assembly que contém controles que dão suporte a estilos visuais.
<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </asmv1:assembly>
No Bloco de Notas, clique em Arquivo e em Salvar como.
Na caixa de diálogo Salvar como, na lista suspensa Salvar como tipo, selecione Todos os Arquivos.
Na caixa Nome do arquivo, nomeie o arquivo e acrescente .manifest ao final do nome do arquivo. Por exemplo: themes.manifest.
Escolha o botão Procurar Pastas, selecione qualquer pasta e clique em Salvar.
Observação
Os procedimentos restantes pressupõem que o nome desse arquivo seja themes.manifest e que o arquivo seja salvo no diretório C:\temp do seu computador.
Inserir o arquivo de manifesto no arquivo executável da solução publicada
Abra Prompt de Comando do Desenvolvedor para Visual Studio.
Para obter mais informações sobre como abrir o Prompt de Comando do Desenvolvedor para Visual Studio, consulte Prompt de Comando do Desenvolvedor e PowerShell do Desenvolvedor.
Observação
As etapas restantes fazem as seguintes suposições sobre sua solução:
O nome da solução é MyWPFProject.
Essa solução está localizada no seguinte diretório:
%UserProfile%\Documents\Visual Studio version\Projects\
.A solução é publicada no seguinte diretório:
%UserProfile%\Documents\Visual Studio version\Projects\publish
.A versão mais recente dos arquivos de aplicativo publicados está localizada no seguinte diretório:
%UserProfile%\Documents\Visual Studio version\Projects\publish\Application Files\WPFApp_1_0_0_0
Você não precisa usar o nome ou os locais de diretório descritos acima. O nome e os locais descritos acima são usados apenas para ilustrar as etapas necessárias para publicar sua solução.
No prompt de comando, altere o caminho para o diretório que contém a versão mais recente dos arquivos de aplicativo publicados. O exemplo a seguir demonstra essa etapa.
cd "%UserProfile%\Documents\Visual Studio version\Projects\MyWPFProject\publish\Application Files\WPFApp_1_0_0_0"
No prompt de comando, execute o comando a seguir para inserir o arquivo de manifesto no arquivo executável do aplicativo.
mt -manifest c:\temp\themes.manifest -outputresource:MyWPFApp.exe.deploy
Assinar os manifestos de aplicativo e implantação
No prompt de comando, execute o comando a seguir para remover a extensão .deploy do arquivo executável no diretório atual.
ren MyWPFApp.exe.deploy MyWPFApp.exe
Observação
Esse exemplo pressupõe que apenas um arquivo tenha a extensão de arquivo .deploy. Certifique-se de renomear todos os arquivos nesse diretório que tenham a extensão de arquivo .deploy.
No prompt de comando, execute o comando a seguir para assinar o manifesto do aplicativo.
mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
Observação
Esse exemplo pressupõe que você assine o manifesto usando o arquivo .pfx do projeto. Se você não estiver assinando o manifesto, poderá omitir o parâmetro
-cf
usado neste exemplo. Se você estiver assinando o manifesto com um certificado que requer uma senha, especifique a opção-password
(For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password
).No prompt de comando, execute o comando a seguir para adicionar a extensão .deploy ao nome do arquivo que você renomeou em uma etapa anterior deste procedimento.
ren MyWPFApp.exe MyWPFApp.exe.deploy
Observação
Esse exemplo pressupõe que apenas um arquivo tinha uma extensão de arquivo .deploy. Certifique-se de renomear todos os arquivos nesse diretório que tinham anteriormente a extensão de nome de arquivo .deploy.
No prompt de comando, execute o comando a seguir para assinar o manifesto de implantação.
mage -u ..\..\MyWPFApp.application -appm MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
Observação
Esse exemplo pressupõe que você assine o manifesto usando o arquivo .pfx do projeto. Se você não estiver assinando o manifesto, poderá omitir o parâmetro
-cf
usado neste exemplo. Se você estiver assinando o manifesto com um certificado que requer uma senha, especifique a opção-password
, conforme esse exemplo:For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password
.Após realizar essas etapas, você pode mover os arquivos publicados para o local a partir do qual deseja que os usuários finais instalem o aplicativo. Se você pretende atualizar a solução com frequência, pode mover esses comandos para um script e executar o script sempre que publicar uma nova versão.