Compartilhar via


Visão geral sobre aplicativos Windows Presentation Foundation hospedados no Windows Media Center

Microsoft Windows Media Center (WMC) é uma mídia digital aplicativo de entretenimento que é instalado com o Windows Vista Home Premium Edition, Windows Vista Ultimatee com Microsoft Windows XP Media Center Edition 2005. WMC permite que os usuários de gerenciar e usar uma grande variedade de mídia, incluindo televisão (digital e de alta definição) DVDs, música, vídeo, rádio e fotos.

Captura de tela do Windows Media Center

Saído direto da caixa, um WMC computador pessoal (PC) pode ser usado para exibir e reproduzir mídia digital. Isso é conhecido como experiência do usuário 2' pois os usuários operam o WMC no PC, usando mouse, teclado e monitor.

No entanto, um PC WMC pode ser configurado para usar controle remoto ou teclado sem-fio. Nesse modo de operação os usuários não precisarão estar situados no PC WMC para operá-lo. Isso é conhecido como o experiência do usuário 10' e atende às configurações do WMC que incluem monitores grandes e hardware de entretenimento doméstico tradicional como televisores e sistemas de som.

A funcionalidade principal que é oferecida pelo WMC é composta de um conjunto de aplicativos para gerenciamento e reprodução de mídia digital. No entanto, você pode usar o WPF para criar seus próprios aplicativos personalizados para as versões Windows Vista do WMC.

Este tópico fornece uma introdução ao desenvolvimento de aplicativos WPF para o WMC e aborda o seguinte:

  • Criação e implantação de um jogo WPF simples.

  • Almejando experiências do usuário 2 ' e 10' no WMC.

  • Personalizando controles WPF para oferecer suporte ao WMC.

  • Usando novos controles específicos do WMC para WPF.

  • Aproveitando o suporte do .NET Framework.

  • Integração com o WMC através de APIs gerenciadas.

  • Usando o Visual Studio 2005 para aprimorar o processo de desenvolvimento.

Para encontrar informações mais abrangentes sobre o desenvolvimento de aplicativos para o WMC consulte o Windows Media Center Software Development Kit (WMC SDK).

Este tópico contém as seguintes seções.

  • Hospedando aplicativos WPF no WMC
  • Iniciar um aplicativo WPF para o WMC
  • A experiência do usuário WMC
  • Atualizando controles WPF para WMC
  • Controles WPF adicionais para WMC
  • Usando as bibliotecas de classes do .NET Framework 3.0
  • Integração com as APIs gerenciadas do WMC
  • Desenvolvendo com o Visual Studio
  • Instalando um aplicativo WPF para WMC.
  • Tópicos relacionados

Hospedando aplicativos WPF no WMC

WPF permite o desenvolvimento de dois tipos de aplicativos: autônomo e hospedado por navegador. Aplicativos autônomos fornecem suas próprias janelas e caixas de diálogo para hospedar o conteúdo dos aplicativos. Há dois tipos de aplicativos hospedados em navegador, aplicativos XAML livres e XBAPs, ambos são hospedados pelo Internet Explorer 7. No entanto, o Internet Explorer 7 não sabe nada sobre WPF; para habilitar a capacidade do Internet Explorer 7 de hospedar conteúdo WPF o WPF fornece aplicativos como o Internet Explorer, um proxy de hospedagem. Este proxy pode hospedar conteúdo WPF em nome de outros aplicativos e é criado com a mesma infraestrutura Windows comum que o Internet Explorer sabe como hospedar.

O WMC também é capaz de hospedar esse proxy e, consequentemente, pode hospedar aplicativos WPF baseados em navegador. Isso significa que você pode aproveitar a plataforma de desenvolvimento de aplicativos WPF em geral e, mais especificamente, os recursos de navegação e segurança de aplicativos hospedados em navegador.

O restante deste tópico usa o WordGame! application for WMC (see WordGame! para demonstração do Windows Mídia Centralizar).

Iniciar um aplicativo WPF para o WMC

WordGame! aplicativo consiste em três arquivos seguintes (o mínimo para todos os O XBAPs):

  • wordgamewmc.exe. O XBAP.

  • wordgamewmc.exe.manifest. O manifesto do aplicativo ClickOnce.

  • wordgamewmc.xbap. O manifesto ClickOnce de implantação.

XBAPs são iniciadas usando o ClickOnce, que requer que o aplicativo seja configurado com os arquivos de manifesto de aplicativo e de implantação (consulte Building a WPF Application (WPF)). Especificamente, uma XBAP é iniciada quando o arquivo .xbap é apresentado ou clicado duas vezes. Quando iniciado, o comportamento padrão é o ClickOnce baixar o aplicativo em nome do WPF, depois do que o WPF inicializa o Internet Explorer e o direciona para o aplicativo, como mostrado na figura a seguir:

Captura de tela do WordGame

Para iniciar um aplicativo WMC, no entanto, os usuários navegam até ou clicam duas vezes em um arquivo WMC de link (.mcl). Um arquivo .mcl é um arquivo de configuração XML que é configurado no Windows para ser aberto pelo host WMC (Ehshell.exe) quando acessado via navegador ou clicado duas vezes (consulte WMC SDK) .

ObservaçãoObservação:

arquivos .mcl são convenientes durante o processo de desenvolvimento, mas são não é recomendado sistema autônomo o mecanismo de instalação e inicialização WMC aplicativos. Consulte Instalando um aplicativo WPF para WMC.

Quando um arquivo .mcl é aberto, o host WMC irá analisar e processar as instruções de configuração contidas no arquivo .mcl, a mais importante das quais é o nome do aplicativo a ser aberto. Você pode usar esse mecanismo para criar um arquivo .mcl configurado para iniciar uma XBAP:

<application url="https://localhost/wordgamewmc/wordgamewmc.xbap" />

Quando o host WMC processa esse arquivo .mcl, o host WMC irá navegar até o arquivo .xbap. Isso faz com que o ClickOnce inicie o aplicativo no host WMC em si, conforme mostrado na figura a seguir:

Captura de tela do WordGame

ObservaçãoObservação:

Se você quisesse WMC para hospedar uma flexível XAML aplicativo, você configuraria o arquivo .mcl com um arquivo .xaml, da seguinte forma:

<application
  url="https://localhost/loosexamlapplication/loosexamlpage.xaml" />

Sem qualquer alteração na XBAP em si e com a adição de um único arquivo de configuração, um aplicativo WPF hospedado em navegador pode ser hospedado pelo WMC do jeito como está.

No entanto, a experiência do usuário WMC é bastante específica e, por consistência e estilo, aplicativos WMC XBAP devem ser projetados para integrar-se à experiência do usuário WMC. O restante deste tópico aborda os principais aspectos da experiência do usuário WMC e como criar XBAPs para serem sensíveis a ele.

A experiência do usuário WMC

Fornecer um experiência do usuário consistente é uma parte importante de qualquer desenvolvimento de aplicativos. Com relação a usuários do WMC, um aplicativo deve tentar ser consistente nos seguintes aspectos:

  • Tema. O estilo geral da interface do usuário do aplicativo.

  • Layout. Posicionamento e tamanho dos controles.

  • Navegação. Uso de teclado, mouse e controle remoto para navegar pela interface do usuário do aplicativo.

Enquanto uma discussão detalhada sobre a experiência do usuário WMC pode ser encontrada no WMC SDK, os tópicos a seguir fornecem uma visão geral de alto nível.

Tema

Como você pode ver na figura a seguir, o tema do WMC tem vários elementos distintos:

Capturas de tela do Windows Media Center

Os mais distintos desses incluem um plano de fundo vítreo azul e grandes fontes arredondadas que são de cores leves. O resultado é a criação de uma aparência que pode ser facilmente discernida por usuários 2 ', que estão direitamente a frente de um monitor, e por usuários 10' que podem estar a qualquer distância de uma televisão. Enquanto aplicativos WPF devem seguir essa abordagem geral em relação a aparência, o WMC não expõe nativamente essas informações para aplicativos WPF usarem. Felizmente, o WPF fornece uma rica infraestrutura para estilo e temas que pode ser aproveitada para replicar com facilidade a aparência WMC, se desejável. Como alternativa, você pode usar o WPF para criar uma experiência do usuário totalmente nova e visualmente rica, embora você deva manter considerações de layout e navegação em mente.

Por exemplo, para criar um plano de fundo estilo WMC para páginas, você pode fazer o seguinte:

<Application
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="HomePage.xaml">
  <!--MediaCenterThemes.xaml-->
  <Application.Resources>
    <LinearGradientBrush x:Key="PageGlassyBackground"  StartPoint="0,0.5" EndPoint="1,0.5">
      <GradientStop Color="#ff2B6680" Offset="1.5" />
      <GradientStop Color="#569dc2" Offset="0" />
    </LinearGradientBrush>
    ...
  </Application.Resources>
</Application>

Como os temas são geralmente compostos de mais de um elemento, considere usar um dicionário de recursos personalizados para encapsular os estilos do tema WMC:

<ResourceDictionary>
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" />
  <LinearGradientBrush x:Key="PageGlassyBackground"  StartPoint="0,0.5" EndPoint="1,0.5">
    <GradientStop Color="#ff2B6680" Offset="1.5" />
    <GradientStop Color="#569dc2" Offset="0" />
  </LinearGradientBrush>
  ...
</ResourceDictionary>

Para incorporar um dicionário de recursos em um aplicativo, configura-se o elemento Application.Resources de sua definição de aplicativo para se referir ao arquivo .xaml do dicionário de recursos:

<Application
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml">
  <!--MediaCenterThemes.xaml-->
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="MediaCenterTheme.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

A figura a seguir mostra WordGame! atualizado com um conjunto completo de recursos para o e estilosWMC tema.

Captura de tela do WordGame

O WMC não restringe o desenvolvimento de temas de aplicativo que incorporem elementos específicos do aplicativo ou específicos de marca. No entanto, existem vários aspectos de um tema de aplicativo que devem ser considerados ao criar qualquer aplicativo para a experiência do usuário WMC, incluindo:

  • Cores seguras para a televisão: Não usar cores brilhantes podem ser suscetíveis a sangramento (por exemplo, verde, vermelho).

  • Contraste: Para manter texto visualmente diferente do plano de fundo, certifique-se de que a opção de primeiro plano e plano de fundo cores para os elementos visuais tem um nível apropriado de contraste.

  • Fontes: Você pode melhorar a legibilidade por meio de maiores porte fontes sem serifas. Além disso, a remoção de palavras desnecessárias do conteúdo pode ajudar a criar áreas de texto que são mais fáceis de serem lidas.

  • Botões: Manter a aparência dos botões simples.

  • Imagens: Ao criar imagens, considere a qualidade do vídeo e o dimensionar e dimensionar do baixar.

  • Animação: Use animação quando apropriado.

Consulte o WMC SDK para informações detalhadas sobre temas de aplicativo do WMC.

Layout

Um problema que pode não ser imediatamente aparente ocorre quando um usuário passa o mouse sobre o host WMC, o que faz com que o host WMC exiba elementos de interface do usuário de navegação adicionais para navegação controlada por mouse, como mostrado na figura a seguir:

Captura de tela de exemplo do WordGame

Nessa figura, você pode ver que as partes superior esquerda e inferior direita da UI do aplicativo são cobertas pelo cromo de navegação. Nesta situação, você pode atualizar o layout da sua UI para levar a interface do usuário de navegação em consideração. Para o WordGame!, isto envolveu a mudança do título do aplicativo para a direita da interface do usuário e a adição de uma linha de 50 pixels de altura à parte inferior do elemento Grid que hospeda o conteúdo da página inicial:

<Grid>
    ...
    <Grid.RowDefinitions>
        <RowDefinition Height="5" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="20" />
        <RowDefinition Height="Auto" />
        <RowDefinition />
        <RowDefinition Height="50" />
    </Grid.RowDefinitions>
    <!-- Game title -->
    <TextBlock ... TextAlignment="Right">Word Game!</TextBlock>
    ...
</Grid>

O efeito da inclusão dessas linhas é mostrado na figura a seguir:

Captura de tela de exemplo do WordGame

Por esse motivo, XBAPs para o WMC precisam ser sensíveis a vários comportamentos de layout e consistência do WMC.

Considerações chave de layout que você deve fazer incluem:

  • Aplicativo de layout: O layout dos seus aplicativos deve ser simples e consistente para facilitar a desenvolver e manter familiaridade com interface do usuário do seu aplicativo.

  • Layout; o WMC: O layout dos seus aplicativos deve, onde pragmático, manter consistência com o GeralWMC experiência do usuário. Isso permite que os usuários que estão familiarizados com o WMC possam se tornar confortáveis com seu aplicativo mais rapidamente.

  • Vídeo: Se o aplicativo exibir vídeo usando o WMC gerenciado APIs, WMC irá executar o vídeo na parte inferior esquerda da tela. Consequentemente, a interface do usuário deve ser projetada para levar isso em conta.

  • Resolução: Interface de usuário e o layout do seu aplicativo devem visar uma resolução de 1024 x 768. WPF oferece suporte de layout para ajudar você no layout de sua interface do usuário para o destino de 1024 x 768 e garantindo que o layout é retido sistema autônomo a interface do usuário é redimensionado (consulte O sistema de layout Para obter mais informações).

Consulte o WMC SDK para informações detalhadas sobre o layout WMC.

Essencialmente, tema e layout determinam como os controles que constituem a interface do usuário do seu aplicativo são organizados. Navegação, por outro lado, determina como os usuários acessam e movem-se entre controles.

Quando um controle está recebendo entrada do usuário, diz-se que ele tem o foco. Para colocar o foco em um controle específico quando uma página do seu aplicativo XBAP for exibida, você pode usar a marcação:

<!-- Set focus on guess character text box -->
<Page ... FocusManager.FocusedElement="{Binding ElementName=guessedChar}">
    ...
</Page>

Você deve fazer isso para oferecer suporte tanto ao modos de operação 2' quanto ao 10'.

Para permitir que os usuários naveguem entre os controles em um aplicativo WMC tanto no modo 2' quanto no modo 10', seu aplicativo deve tratar navegação usando mouse, teclado (com fio ou sem-fio) e controle remoto. Por padrão a navegação com mouse e teclado é a mesma que para qualquer aplicativo WPF, incluindo:

  • Clicando em controles para alterar o foco para eles.

  • Usando a tecla TAB para mover o foco entre controles.

  • Através da propriedade IsDefault de um botão é possível especificá-lo para ser clicado por padrão quando a tecla Return/Enter é pressionada.

  • Através da propriedade IsCancel de um botão é possível especificá-lo para ser clicado por padrão quando a tecla Escape é pressionada.

Para suportar controles remotos, você precisa oferecer suporte à navegação direcional, o que significa permitir que os usuários movam o foco de controle, clicando os botões para cima, para baixo, para a esquerda e para a direita do controle remoto. Você não precisa escrever nenhum código especial para oferecer suporte à navegação direcional, contanto que você use um subconjunto específico de controles WPF.

Atualizando controles WPF para WMC

Embora o WPF ofereça diversos controles, somente um subconjunto desses controles é adequado para uso em aplicativos WMC por padrão. O fator determinante é se eles podem ser alcançados, manipulados e navegados através do uso de um controle remoto. A figura a seguir mostra um subconjunto dos controles WPF que suportam a entrada vinda de um controle remoto (usando estilos WMC):

Captura de tela do Windows Media Center

Essas limitações não impedem o uso de outros controles WPF, embora seja necessário realizar o trabalho adicional de fazê-los funcionar com o WMC. Por exemplo, considere o controle Slider, que é mostrado hospedado no WMC na figura a seguir:

Captura de tela de controle deslizante

Por padrão, um Slider pode ser exibido e acessado utilizando o mouse, teclado ou o controle remoto. No entanto, não se pode mudar navegacionalmente de controle a partir de um Slider utilizando um controle remoto - o Slider interpreta os cliques dos botões para cima, para baixo, para a esquerda e para a direita do controle remoto como tentativas de aumentar ou diminuir o valor do Slider.

Nessas situações, uma solução é criar um controle composto que contém o controle desejado e controles adicionais para manipulá-lo que sejam compatíveis com um controle remoto. Por exemplo, o Slider pode ainda ser usado com dois botões, uma para diminuir o valor do Slider e outro para incrementar o valor do Slider, usando o seguinte código:

<Page x:Class="SliderPage"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <!-- Custom Slider -->
  <StackPanel Margin="50" Orientation="Horizontal" VerticalAlignment="Top">
    <Button 
      Name="decrementButton" 
      Click="decrementButton_Click"
      Margin="10" 
      FontSize="10" 
      HorizontalContentAlignment="Center" 
      VerticalContentAlignment="Center" 
      Width="40" Height="40">
      -
    </Button>
    <Slider 
      Name="slider" 
      Focusable="False" 
      Width="100" Margin="0,15,0,0" 
      Minimum="0" Maximum="10" Value="50" 
      Interval="1" TickFrequency="1" TickPlacement="BottomRight" />
    <Button 
      Name="incrementButton" 
      Click="incrementButton_Click"
      Margin="10" 
      FontSize="10" 
      HorizontalContentAlignment="Center" 
      VerticalContentAlignment="Center" 
      Width="40" Height="40">
      +
    </Button>
  </StackPanel>
  
</Page>
using System.Windows;
using System.Windows.Controls;
public partial class SliderPage : System.Windows.Controls.Page
{
    //</SnippetSliderPageCodeBehind1>
    public SliderPage()
    {
        InitializeComponent();
    }

    void decrementButton_Click(object sender, RoutedEventArgs e)
    {
        this.slider.Value--;
    }
    void incrementButton_Click(object sender, RoutedEventArgs e)
    {
        this.slider.Value++;
    }
}

O resultado é mostrado na figura a seguir.

Captura de tela de controle deslizante

Controles WPF adicionais para WMC

Outro controle problemático é o TextBox, mostrado na figura a seguir. Usando um controle remoto, não é possível realmente inserir caracteres em um TextBox. O que é necessário é um controle que permita a um usuário de controle remoto selecionar um ou mais caracteres. Uma técnica comum já em uso em dispositivos móveis, cujo tamanho impede que tenham um teclado normal, é exibir um teclado na interface do usuário e permitir que o usuário selecione os caracteres de que precisa.

O exemplo inclui um controle teclado virtual para aplicativos WPF que tenham como alvo o WMC, o qual é mostrado na figura a seguir:

O controle de teclado virtual

Isso é implementado como a classe SoftKeyboardTextBox no conjunto de módulos (assembly) Keyboard.dll que vem com o exemplo e reside no espaço de nomes MCEControls. Para usá-lo, você:

  1. Adiciona uma referência ao conjunto de módulos (assembly) Keyboard que vem com os MCEControls.

  2. Adiciona uma declaração de espaço de nomes XML ao conjunto de módulos (assembly) do seu conteúdo.

  3. Adiciona no XAML a declaração e configuração de uma SoftKeyboardTextBox.

O resultado é mostrado na figura a seguir.

<Page 
  ... 
  xmlns:MCEControls="clr-namespace:MCEControls;assembly=Keyboard" >
  ...
  <MCEControls:SoftKeyboardTextBox 
    Name="guessedChar" 
    Grid.Column="0" 
    Margin="0,0,5,0" 
    Width="80" 
    MaxLength="1" />
  ...
</Page>

Usando as bibliotecas de classes do .NET Framework 3.0

Um aplicativo WPF do WMC não está limitado a controles. Um aplicativo WPF também pode aproveitar a abrangência do .NET Framework para obter funcionalidades adicionais, permitindo que você use o mesmo código que você faria para um aplicativo WPF autônomo ou baseado em navegador.

Por exemplo, o código para salvar e carregar os dados a partir de um aplicativo que é hospedado pelo WMC é o mesmo que para aplicativos não WMC e da mesma forma, por restrições de segurança (consulte Windows Presentation Foundation Security), dependendo do local a partir do qual o aplicativo é iniciado ou não vai depender se o aplicativo hospedado pelo WMC pode ou não gravar no disco local.

Para ser seguro, um aplicativo pode usar armazenamento isolado para manter arquivos:

using System;
using System.ComponentModel;
using System.IO;
using System.IO.IsolatedStorage;
using System.Xml;
using System.Xml.Serialization;
...
public static PlayerScore Load()
{
    try
    {
        // Load the playerscore.xml file from isolated storage
        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        using (Stream stream = new IsolatedStorageFileStream("playerscore.xml", FileMode.Open, isf))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(PlayerScore));
            return (PlayerScore)xmlSerializer.Deserialize(stream);
        }
    }
    catch (FileNotFoundException ex)
    {
        return new PlayerScore();
    }
}

public static void Save(PlayerScore playerScore)
{
    // Save the playerscore.xml file to isolated storage
    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
    using (Stream stream = new IsolatedStorageFileStream("playerscore.xml", FileMode.Create, isf))
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(PlayerScore));
        xmlSerializer.Serialize(stream, playerScore);
    }
}

Integração com as APIs gerenciadas do WMC

WPF aplicativos para WMC também pode integrar-se com os recursos do WMC gerenciado por si mesmo por meio de um conjunto de APIs que são instalados com o sistema operacional e localizados em dois assemblies: Microsoft.MediaCenter.dll, and Microsoft.MediaCenter.UI.dll.

Utilizando essas APIs, você pode integrar uma ampla variedade de serviços WMC, incluindo inspeção, configuração e execução de conteúdo de mídia. Mais informações sobre isso podem ser encontradas no WMC SDK.

Um aspecto desses recursos é para integrar ainda mais a experiência do usuário do seu aplicativo com a do WMC. Por exemplo, se um aplicativo WPF precisar notificar o usuário com um caixa de mensagem, ele poderia exibir algo como o seguinte:

Captura de tela de exemplo do WordGame

No entanto, a aparência de uma caixa de mensagem WPF padrão é inconsistente com a experiência do WMC. Felizmente no entanto, as APIs gerenciadas do WMC fornecem suas próprias caixas de mensagem no estilo WMC, que você pode usar em código como o seguinte:

using Microsoft.MediaCenter;
...
// Get media center host and show dialog box
MediaCenterEnvironment mce = Microsoft.MediaCenter.Hosting.AddInHost.Current.MediaCenterEnvironment;
mce.Dialog(msg, "WordGame!", DialogButtons.Ok, 1000, true);

Isso fará com que uma caixa de diálogo WMC como a a seguir seja exibida:

Captura de tela de exemplo do WordGame

Deve-se consultar o WMC SDK para um entendimento detalhado das APIs gerenciadas do WMC.

ObservaçãoObservação:

Não é possível executar uma XBAP que faz referência a WMC Gerenciado APIs a menos que o XBAP é hospedado por de WMC.

Desenvolvendo com o Visual Studio

Até o momento, este tópico abordou a amplitude dos principais problemas de programação com os quais você precisará lidar quando estiver criando XBAPs para o WMC, incluindo:

  • Criação de um aplicativo XBAP típico.

  • Uso de um arquivo .mcl para iniciar uma XBAP no WMC.

  • Criação de um tema WMC para uma XBAP.

  • Referência às APIs gerenciadas do WMC.

Essas são questões que você provavelmente precisará tratar em cada XBAP criada para o WMC. Em vez de recriar esses elementos a cada vez que você criar uma XBAP para o WMC, você pode usar o modelo de projeto Media Center Application (WPF) para o Microsoft Visual Studio 2005 que é instalado com o WMC SDK.

ObservaçãoObservação:

O WMC modelos de projeto são instalados somente se ambos os Visual Studio 2005 e "Fidalgo" são instalados.

O modelo de projeto Media Center Application (WPF) irá criar um projeto Visual Studio 2005 que tenha esses elementos incluídos, por padrão.

Para criar um novo Media Center Application (WPF):

  1. Abra Visual Studio 2005.

  2. Escolha Microsoft Visual Studio | File | New | Project | Visual C# | .NET Framework 3.0 | Application Media Center (WPF).

A lista a seguir mostra os itens principais gerados por padrão pelo modelo de projeto:

  • Um arquivo readme.txt que inclui texto útil sobre a criação e depuração de XBAPs para WPF.

  • Referências para os conjuntos de módulos (assemblies) gerenciados do WMC.

  • Um arquivo MediaCenterTheme.xaml que é um recurso de dicionário que contém um conjunto completo de estilos WMC que são, por padrão, aplicados à página padrão, Page1.xaml.

  • Um arquivo .mcl que é gerado junto com a saída padrão da XBAP.

Observe que há um modelo de projeto equivalente para Microsoft Visual Basic.

Depurando um projeto

Para depurar uma XBAP dentro do host WMC do Visual Studio 2005, você precisará fazer o seguinte:

  1. Clique com o botão direito do mouse no projeto em Solution Explorer e em Properties | Debug.

  2. Defina Start Program como c:\windows\system32\presentationhost.exe.

  3. Defina Command Line Arguments como -debug.

  4. Execute o aplicativo escolhendo Microsoft Visual Studio | Debug | Start Debugging (ou pressionando F5).

  5. Clique duas vezes no arquivo .mcl gerado durante o processo de construção ( \bin\debug\assemblyname.mcl).

O aplicativo especificado no arquivo .mcl será iniciado e hospedado no WMC.

Instalando um aplicativo WPF para WMC.

Uma das vantagens de usar o WMC é sua capacidade de ajudar a criar aplicativos Microsoft Windows Installer (arquivos .msi). Arquivos .msi são uma maneira útil para distribuir seu aplicativo WPF para máquinas clientes WMC.

As etapas a seguir foram seguidas para criar um aplicativo Windows Installer simples para o WordGame!:

  1. No Visual Studio 2005, clique com o botão direito do mouse sobre a solução XBAP em Solution Explorer e escolha Add | New Project.

  2. Na lista Project types, selecione Other Project Types | Setup and Deployment.

  3. Na lista de modelos, selecione Setup Project ou Setup Wizard (o último o orientará pela configuração inicial do projeto de instalação Windows Installer criado).

  4. Clique com o botão direito do mouse no novo projeto Windows Installer e escolha Add | File e escolha os seguintes arquivos:

    1. WordGameWMC.mcl

    2. WordGameWMC.exe

    3. WordGameWMC.exe.manifest.

    4. WordGameWMC.xbap

    5. WordList.txt

    6. Keyboard.dll

  5. Na guia File System, escolha User's Desktop.

  6. Na lista de arquivos, clique com o botão direito do mouse e selecione Create Shortcut to User's Desktop.

  7. Selecione Application Folder | WordGameWMC.mcl.

  8. Recompile o projeto Windows Installer.

Quando o projeto Windows Installer é compilado, um arquivo .msi é gerado na pasta de saída da compilação. Este é então copiado para o computador cliente e executado para instalar o aplicativo. A instalação padrão é criar uma pasta de acordo com o seguinte formato:

c:\program files\CompanyName\ApplicationName\Application Files

Todos os arquivos que foram selecionados durante a configuração do projeto Windows Installer são copiados para esta pasta, junto com quaisquer conjuntos de módulos (assemblies) que foram selecionados como dependências no projeto Windows Installer.

Além disso, um ícone de atalho para o WordGameWMC.mcl é colocado na área de trabalho e pode ser clicado duas vezes ou aberto para iniciar o aplicativo dentro do WMC.

ObservaçãoObservação:

O arquivo de projeto, para o aplicativo em si, precisa ser atualizado manualmente para garantir que o caminho para o arquivo .xbap que é adicionado ao arquivo .mcl gerado está correto para instalação.

Esta instalação é uma demonstração que você pode usar para ver as noções básicas de como criar um Windows Installer para um aplicativo WPF do WMC.

Para aplicativos WPF do mundo real para o WMC, suas técnicas de instalação devem ser diferentes.

Primeiro, seu aplicativo deve instalar um arquivo HTML que fornece um link para o aplicativo WPF de verdade hospedado em um servidor web. Hospedar o aplicativo em um servidor web permite que novas versões do aplicativo sejam criadas, publicadas e captadas pelo computador do cliente sem que o usuário precise reinstalar o aplicativo.

Segundo, você não deve utilizar arquivos .mcl. Em vez disso, você deve criar um instalador Windows que chama a API MediaCenter.RegisterApplication do WMC, ou deve executar o utilitário de linha de comando RegisterMceApp.exe. Consulte o WMC SDK para obter mais detalhes.

Consulte também

Conceitos

Visão geral sobre Windows Presentation Foundation XAML Browser Applications

Outros recursos

Windows Media Center Software Development Kit