Armazene e recupere configurações e outros dados de aplicativo

Os Dados de aplicativo são dados mutáveis, criados e gerenciados por um aplicativo específico. Ele inclui o estado de runtime, as configurações de aplicativo, as preferências do usuário, o conteúdo de referência (como as definições de dicionários em um aplicativo de dicionário), dentre outras configurações. Os dados do aplicativo são diferentes dos dados do usuário, dados que o usuário cria e gerencia ao usar um aplicativo. Dados do usuário incluem arquivos de documentos ou mídia, transcrições de email ou comunicação ou registros de banco de dados com conteúdo criado pelo usuário. Esses dados podem ser úteis ou significativos para mais de um aplicativo. Muitas vezes, são os dados que o usuário deseja manipular ou transmitir como uma entidade independente do próprio aplicativo, como um documento.

Observação importante sobre dados de aplicativos: o tempo de vida de dados de aplicativo está vinculado ao tempo de vida do aplicativo. Se o aplicativo for removido, todos os dados de aplicativo serão perdidos. Não use dados de aplicativo para armazenar dados de usuário ou qualquer coisa que os usuários possam perceber como valiosa e insubstituível. Recomendamos que as bibliotecas do usuário e o Microsoft OneDrive sejam usados para armazenar esse tipo de informação. Dados de aplicativo são ideais para armazenar preferências, configurações e favoritos do usuário específicos para o aplicativo.

Tipos de dados de aplicativos

Há dois tipos de dados de aplicativo: configurações e arquivos.

Configurações

Use configurações para armazenar as preferências do usuário e as informações de estado do aplicativo. A API de dados de aplicativo permite criar e recuperar configurações facilmente (mostraremos alguns exemplos mais adiante neste artigo).

Estes são os tipos de dados que você pode usar para configurações de aplicativo:

  • UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
  • Booliano
  • Char16, String
  • DateTime, TimeSpan
  • GUID, Point, Size, Rect
  • ApplicationDataCompositeValue: conjunto de configurações de aplicativo relacionados que devem ser serializados e desserializados atomicamente. Use configurações compostas para lidar facilmente com atualizações atômicas de configurações interdependentes. O sistema garante a integridade das configurações compostas durante acesso simultâneo e uso de perfil móvel. Configurações compostas são otimizadas para pequenas quantidades de dados, e o desempenho pode ser ruim se você usá-las para conjuntos de dados grandes.

Arquivos

Use arquivos para armazenar dados binários ou habilitar seus próprios tipos serializados personalizados.

Armazenando dados de aplicativo em repositórios de dados de aplicativo

Quando um aplicativo é instalado, o sistema fornece seus próprios armazenamentos de dados por usuário para configurações e arquivos. Você não precisa saber onde ou como esses dados existem, pois o sistema é responsável por gerenciar o armazenamento físico, garantindo que os dados sejam mantidos isolados de outros aplicativos e usuários. O sistema também preserva o conteúdo desses armazenamentos de dados quando o usuário instala uma atualização no seu aplicativo e remove o conteúdo desses armazenamentos de dados de maneira completa e limpa quando seu aplicativo é desinstalado.

No repositório de dados de aplicativos, cada aplicativo tem diretórios raiz definidos pelo sistema: um para arquivos locais, um para arquivos de perfil móvel e um para arquivos temporários. O aplicativo pode adicionar novos arquivos e novos contêineres a cada um desses diretórios raiz.

Dados de aplicativo locais

Dados de aplicativo locais devem ser usados para quaisquer informações que precisem ser preservadas entre sessões de aplicativos e não sejam adequadas para dados de aplicativo de perfil móvel. Dados não aplicáveis em outros dispositivos também devem ser armazenados aqui. Não há restrição geral de tamanho nos dados locais armazenados. Use o armazenamento de dados de aplicativo locais para dados que não fazem sentido para uso de perfil móvel e para conjuntos de dados grandes.

Recuperar o armazenamento de dados de aplicativo locais

Antes de poder ler ou gravar dados de aplicativo locais, você deve recuperar o repositório de dados de aplicativo locais. Para recuperar o repositório de dados de aplicativo locais, use a propriedade ApplicationData.LocalSettings para obter as configurações locais do aplicativo como um objeto ApplicationDataContainer. Use a propriedade ApplicationData.LocalFolder para obter os arquivos em um objeto StorageFolder. Use a propriedade ApplicationData.LocalCacheFolder para obter a pasta no repositório de dados de aplicativo locais, no qual é possível salvar arquivos que não estão incluídos no backup e na restauração.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

Criar e recuperar uma configuração local simples

Para criar ou gravar uma configuração, use a propriedade ApplicationDataContainer.Values para acessar as configurações no contêiner localSettings que obtivemos na etapa anterior. Este exemplo cria uma configuração chamada exampleSetting.

// Simple setting

localSettings.Values["exampleSetting"] = "Hello Windows";

Para recuperar a configuração, use a mesma propriedade ApplicationDataContainer.Values usada para criar a configuração. Este exemplo mostra como recuperar a configuração que acabamos de criar.

// Simple setting
Object value = localSettings.Values["exampleSetting"];

Criar e recuperar um valor composto local

Para criar ou gravar um valor composto, crie um objeto ApplicationDataCompositeValue. Este exemplo cria uma configuração composta chamada exampleCompositeSetting e a adiciona ao contêiner localSettings.

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
    new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

localSettings.Values["exampleCompositeSetting"] = composite;

Este exemplo mostra como recuperar o valor composto que acabamos de criar.

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
   (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];

if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}

Criar e ler um arquivo local

Para criar e atualizar um arquivo no repositório de dados de aplicativo locais, use as APIs de arquivo, como Windows.Storage.StorageFolder.CreateFileAsync e Windows.Storage.FileIO.WriteTextAsync. Este exemplo cria um arquivo dataFile.txt no contêiner localFolder e grava a data e a hora atuais nesse arquivo. O valor ReplaceExisting da enumeração CreationCollisionOption indica para substituir o arquivo se ele já existir.

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}

Para abrir e ler um arquivo no repositório de dados do aplicativo local, use as APIs de arquivo, como Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync e Windows.Storage.FileIO.ReadTextAsync. Este exemplo abre o arquivo dataFile.txt criado na etapa anterior e lê a data do arquivo. Para obter detalhes sobre como carregar recursos de arquivo de vários locais, consulte Como carregar recursos de arquivo.

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Dados de uso de perfil móvel

Aviso

Dados e configurações de uso de perfil móvel não têm mais suporte a partir do Windows 11. A substituição recomendada é o Serviço de Aplicativo do Azure. O Serviço de Aplicativo do Azure tem amplo suporte, é bem documentado, confiável e dá suporte a cenários multiplataforma/de ecossistema cruzado, como iOS, Android e Web.

A documentação a seguir é aplicável ao Windows 10 versões 1909 e inferiores.

Se você usar dados de uso de perfil móvel no seu aplicativo, os usuários poderão facilmente manter os dados de aplicativo sincronizados em vários dispositivos. Se um usuário instalar seu aplicativo em vários dispositivos, o sistema operacional manterá os dados de aplicativo sincronizados, reduzindo a quantidade de trabalho de configuração que o usuário precisa fazer para o aplicativo no segundo dispositivo. O uso de perfil móvel também permite que os usuários continuem uma tarefa, como compor uma lista, exatamente de onde pararam, mesmo em um dispositivo diferente. O sistema operacional replica dados de perfil móvel para a nuvem quando estes são atualizados e os sincroniza com os outros dispositivos nos quais o aplicativo está instalado.

O sistema operacional limita o tamanho dos dados de aplicativo que cada aplicativo pode usar para perfil móvel. Consulte ApplicationData.RoamingStorageQuota. Se o aplicativo atingir esse limite, nenhum dos dados de aplicativo será replicado para a nuvem até que o total de dados de aplicativo de perfil móvel seja novamente menor que o limite. Por isso, é uma prática recomendada usar dados de perfil móvel apenas para preferências do usuário, links e pequenos arquivos de dados.

Dados de de perfil móvel para um aplicativo estão disponíveis na nuvem, desde que sejam acessados pelo usuário de algum dispositivo dentro do intervalo de tempo necessário. Se o usuário não executar um aplicativo por mais tempo do que esse intervalo de tempo, seus dados de perfil móvel serão removidos da nuvem. Se um usuário desinstalar um aplicativo, seus dados de perfil móvel não serão removidos automaticamente da nuvem, mas serão preservados. Se o usuário reinstalar o aplicativo dentro do intervalo de tempo, os dados de perfil móvel serão sincronizados a partir da nuvem.

O que fazer e não fazer com dados de perfil móvel

Confira uma observação importante sobre os dados de roaming.

  • Use perfis móveis para preferências e personalizações do usuário, links e pequenos arquivos de dados. Por exemplo, use perfis móveis para preservar a preferência de cores de plano de fundo de um usuário em todos os dispositivos.
  • Use perfis móveis para permitir que os usuários continuem uma tarefa entre dispositivos. Por exemplo, usar perfis móveis de dados de aplicativo, como o conteúdo de um email redigido ou a página visualizada mais recentemente em um aplicativo de leitor.
  • Manipule o evento DataChanged atualizando dados de aplicativo. Esse evento ocorre quando dados de aplicativo acabaram de terminar a sincronização na nuvem.
  • Use perfis móveis para referências a conteúdo em vez de dados brutos. Por exemplo, use perfis móveis para uma URL em vez do conteúdo de um artigo online.
  • Para configurações importantes e críticas de tempo, use a configuração HighPriority associada a RoamingSettings.
  • Não use perfis móveis para dados de aplicativo específicos de um dispositivo. Algumas informações são pertinentes apenas localmente, como um nome de caminho até um recurso de arquivo local. Se você decidir usar perfis móveis para informações locais, verifique se o aplicativo pode ser recuperado caso as informações não sejam válidas no dispositivo secundário.
  • Não use perfis móveis para conjuntos de dados de aplicativo grandes. Há um limite para a quantidade de dados de aplicativo que um aplicativo pode transferir como perfil móvel. Use a propriedade RoamingStorageQuota para obter esse máximo. Se um aplicativo atingir esse limite, nenhum dado poderá receber roaming até que o tamanho do repositório de dados do aplicativo não exceda mais o limite. Ao projetar seu aplicativo, considere como aplicar um limite em dados maiores para não exceder o limite. Por exemplo, se salvar um estado de jogo exigir 10 KB cada, o aplicativo apenas poderá permitir que o usuário armazene até 10 jogos.
  • Não use perfis móveis para dados que dependem de sincronização instantânea. O Windows não garante uma sincronização instantânea. Perfis móveis podem ser significativamente atrasados se um usuário estiver offline ou em uma rede de alta latência. Certifique-se de que sua interface do usuário não dependa de uma sincronização instantânea.
  • Não use roaming para dados alterados com frequência. Por exemplo, se o aplicativo rastreia informações que mudam com frequência, como a posição em uma música por segundo, não armazene isso como dados de aplicativo de perfil móvel. Em vez disso, escolha uma representação menos frequente que ainda forneça uma boa experiência para o usuário, como a música que está sendo reproduzida no momento.

Pré-requisitos de uso de perfis móveis

Confira uma observação importante sobre os dados de roaming.

Qualquer usuário poderá se beneficiar do uso de perfis móveis para dados de aplicativo se usar uma conta Microsoft para fazer logon em seu dispositivo. Porém, usuários e administradores de políticas de grupo podem desativar o uso de perfis móveis para dados de aplicativo em um dispositivo a qualquer momento. Se uma usuária escolher não usar uma conta Microsoft ou desabilitar os recursos de roaming, ela ainda poderá usar seu aplicativo, mas os dados de aplicativo serão locais em cada dispositivo.

Os dados armazenados no PasswordVault serão transferidos somente se o usuário tiver definido o dispositivo como "confiável". Se um dispositivo não for confiável, os dados protegidos nesse cofre não serão usados para perfis móveis.

Resolução de conflitos

Confira uma observação importante sobre os dados de roaming.

Dados de aplicativo de perfis móveis não se destinam para uso simultâneo em mais de um dispositivo ao mesmo tempo. Se surgir um conflito durante a sincronização porque uma determinada unidade de dados foi alterada em dois dispositivos, o sistema sempre favorecerá o valor gravado por último. Isso garante que o aplicativo utilize as informações mais atualizadas. Se a unidade de dados for um composto de configuração, a resolução de conflitos ainda ocorrerá no nível da unidade de configuração, o que significa que a composição com a alteração mais recente será sincronizada.

Quando gravar dados

Confira uma observação importante sobre os dados de roaming.

Dependendo da vida útil esperada da configuração, dados devem ser gravados em momentos diferentes. Dados de aplicativo que mudam com pouca frequência ou lentamente devem ser gravados imediatamente. Porém, dados de aplicativo alterados com frequência apenas devem ser gravados periodicamente em intervalos regulares (como uma vez a cada 5 minutos), bem como quando o aplicativo é suspenso. Por exemplo, um aplicativo de música poderá gravar as configurações da “música atual” sempre que uma nova música começar a tocar, mas a posição real na música deverá ser gravada apenas em suspensão.

Proteção contra o uso excessivo

Confira uma observação importante sobre os dados de roaming.

O sistema tem vários mecanismos de proteção para evitar o uso inadequado de recursos. Se dados de aplicativo não fizerem a transição conforme esperado, é provável que o dispositivo tenha sido temporariamente restrito. Esperar algum tempo geralmente resolverá essa situação automaticamente, e nenhuma ação é necessária.

Controle de versão

Confira uma observação importante sobre os dados de roaming.

Dados de aplicativo podem utilizar controle de versão para atualizar de uma estrutura de dados para outra. O número de versão é diferente da versão do aplicativo e pode ser definido à vontade. Embora não seja obrigatório, é altamente recomendável usar números de versão crescentes, uma vez que complicações indesejáveis (incluindo perda de dados) poderão ocorrer se você tentar fazer a transição para um número de versão de dados mais baixo que represente dados mais recentes.

Dados de aplicativo apenas são transferidos como perfis móveis entre aplicativos instalados com o mesmo número de versão. Por exemplo, dispositivos na versão 2 farão a transição de dados entre si e os dispositivos na versão 3 farão o mesmo, mas nenhuma transmissão de perfis móveis ocorrerá entre um dispositivo executando a versão 2 e um dispositivo executando a versão 3. Se você instalar um novo aplicativo que utilizou vários números de versão em outros dispositivos, o aplicativo recém-instalado sincronizará os dados de aplicativo associados ao número de versão mais alto.

Testes e ferramentas

Confira uma observação importante sobre os dados de roaming.

Os desenvolvedores podem bloquear seus dispositivos para acionar uma sincronização de dados de aplicativo de perfis móveis. Se parecer que os dados do aplicativo não transitam dentro de um determinado período, verifique os seguintes itens e certifique-se de que:

  • Seus dados de perfis móvel não excedem o tamanho máximo (consulte RoamingStorageQuota para detalhes).
  • Os arquivos sejam fechados e liberados corretamente.
  • Haja pelo menos dois dispositivos executando a mesma versão do aplicativo.

Registrar-se para receber notificações quando dados de perfis móveis forem alterados

Confira uma observação importante sobre os dados de roaming.

Para usar dados de aplicativo de perfis móveis, você precisa se registrar para alterações de dados de perfis móveis e recuperar os contêineres desses dados para poder ler e gravar configurações.

  1. Registre-se para receber notificações quando dados de perfis móveis forem alterados.

    O evento DataChanged notifica você quando dados de perfis móveis são alterados. Este exemplo define DataChangeHandler como manipulador para alterações de dados de perfis móveis.

void InitHandlers()
    {
       Windows.Storage.ApplicationData.Current.DataChanged += 
          new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
    }

    void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
    {
       // TODO: Refresh your data
    }
  1. Obtenha os contêineres para as configurações e os arquivos do aplicativo.

    Use a propriedade ApplicationData.RoamingSettings para obter as configurações e a propriedade ApplicationData.RoamingFolder para obter os arquivos.

Windows.Storage.ApplicationDataContainer roamingSettings = 
        Windows.Storage.ApplicationData.Current.RoamingSettings;
    Windows.Storage.StorageFolder roamingFolder = 
        Windows.Storage.ApplicationData.Current.RoamingFolder;

Criar e recuperar configurações de perfis móveis

Confira uma observação importante sobre os dados de roaming.

Use a propriedade ApplicationDataContainer.Values para acessar as configurações no contêiner roamingSettings que obtivemos na seção anterior. Este exemplo cria uma configuração simples exampleSetting e um valor composto composite.

// Simple setting

roamingSettings.Values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
    new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

roamingSettings.Values["exampleCompositeSetting"] = composite;

Este exemplo recupera as configurações que acabamos de criar.

// Simple setting

Object value = roamingSettings.Values["exampleSetting"];

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
   (Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];

if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}

Criar e recuperar arquivos de perfis móveis

Confira uma observação importante sobre os dados de roaming.

Para criar e atualizar um arquivo no repositório de dados de aplicativo de perfis móveis, use as APIs de arquivo, como Windows.Storage.StorageFolder.CreateFileAsync e Windows.Storage.FileIO.WriteTextAsync. Este exemplo cria um arquivo dataFile.txt no contêiner roamingFolder e grava a data e a hora atuais nesse arquivo. O valor ReplaceExisting da enumeração CreationCollisionOption indica para substituir o arquivo se ele já existir.

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}

Para abrir e ler um arquivo no repositório de dados de aplicativo de perfis móveis, use as APIs de arquivo, como Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync e Windows.Storage.FileIO.ReadTextAsync. Este exemplo abre o arquivo dataFile.txt criado na seção anterior e lê a data desse arquivo. Para obter detalhes sobre como carregar recursos de arquivo de vários locais, consulte Como carregar recursos de arquivo.

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Dados temporários do aplicativo

O armazenamento de dados de aplicativo temporários funciona como um cache. Seus arquivos não são transmitidos como perfis móveis e podem ser removidos a qualquer momento. A tarefa de manutenção do sistema pode excluir automaticamente os dados armazenados nesse local a qualquer momento. O usuário também pode limpar arquivos do armazenamento de dados temporário usando a limpeza de disco. Dados de aplicativo temporários podem ser usados para armazenar informações temporárias durante uma sessão de aplicativo. Não há garantia de que esses dados persistirão além do final da sessão do aplicativo, pois o sistema pode recuperar o espaço usado se necessário. O local está disponível por meio da propriedade temporaryFolder.

Recuperar o contêiner de dados temporários

Use a propriedade ApplicationData.TemporaryFolder para obter os arquivos. As próximas etapas usam a variável temporaryFolder desta etapa.

Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;

Criar e ler arquivos temporários

Para criar e atualizar um arquivo no repositório de dados de aplicativo temporários, use as APIs de arquivo, como Windows.Storage.StorageFolder.CreateFileAsync e Windows.Storage.FileIO.WriteTextAsync. Este exemplo cria um arquivo dataFile.txt no contêiner temporaryFolder e grava a data e a hora atuais nesse arquivo. O valor ReplaceExisting da enumeração CreationCollisionOption indica para substituir o arquivo se ele já existir.

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await temporaryFolder.CreateFileAsync("dataFile.txt", 
       CreateCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}

Para abrir e ler um arquivo no repositório de dados de aplicativo de temporários, use as APIs de arquivo, como Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync e Windows.Storage.FileIO.ReadTextAsync. Este exemplo abre o arquivo dataFile.txt criado na etapa anterior e lê a data do arquivo. Para obter detalhes sobre como carregar recursos de arquivo de vários locais, consulte Como carregar recursos de arquivo.

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await temporaryFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Organizar dados de aplicativo com contêineres

Para ajudar você a organizar configurações e arquivos de dados de aplicativo, crie contêineres (representados por objetos ApplicationDataContainer) em vez de trabalhar diretamente com diretórios. Você pode adicionar contêineres aos armazenamentos de dados de aplicativos locais, de perfis móveis e temporários. Contêineres podem ser aninhados com até 32 níveis de profundidade.

Para criar um contêiner de configurações, chame o método ApplicationDataContainer.CreateContainer. Este exemplo cria um contêiner de configurações local exampleContainer e adiciona uma configuração exampleSetting. O valor Always da enumeração ApplicationDataCreateDisposition indica que o contêiner será criado se ainda não existir.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Setting in a container
Windows.Storage.ApplicationDataContainer container = 
   localSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);

if (localSettings.Containers.ContainsKey("exampleContainer"))
{
   localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
}

Excluir configurações e contêineres de aplicativos

Para excluir uma configuração simples da qual seu aplicativo não precisa mais, use o método ApplicationDataContainerSettings.Remove. Este exemplo exclui a configuração local exampleSetting que criamos anteriormente.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Delete simple setting

localSettings.Values.Remove("exampleSetting");

Para excluir uma configuração composta, use o método ApplicationDataCompositeValue.Remove. Este exemplo exclui a configuração composta exampleCompositeSetting local que criamos em um exemplo anterior.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Delete composite setting

localSettings.Values.Remove("exampleCompositeSetting");

Para excluir um contêiner, chame o método ApplicationDataContainer.DeleteContainer. Este exemplo exclui o contêiner de configurações locais exampleContainer que criamos anteriormente.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Delete container

localSettings.DeleteContainer("exampleContainer");

Controle de versão dos dados do aplicativo

Opcionalmente, você pode versionar os dados de aplicativo para seu aplicativo. Isso permitie criar uma versão futura do seu aplicativo que altera o formato dos dados de aplicativo sem causar problemas de compatibilidade com a versão anterior do aplicativo. O aplicativo verifica a versão dos dados de aplicativo no armazenamento de dados e, se a versão for menor que a versão esperada pelo aplicativo, este deverá atualizar os dados de aplicativo para o novo formato e atualizar a versão. Para obter mais informações, consulte a propriedade Application.Version e o método ApplicationData.SetVersionAsync.