Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A maioria dos aplicativos consome ou produz dados. O ClickOnce oferece uma variedade de opções para ler e gravar dados, tanto local quanto remotamente.
Dados Locais
Com ClickOnce, você pode carregar e armazenar dados localmente usando qualquer um dos seguintes métodos:
Diretório de dados ClickOnce
Armazenamento isolado
Outros arquivos locais
Diretório de dados ClickOnce
Cada aplicativo ClickOnce instalado em um computador local tem um diretório de dados, armazenado na pasta Documents and Settings do usuário. Qualquer arquivo incluído em um aplicativo ClickOnce e marcado como um arquivo de "dados" é copiado para este diretório quando um aplicativo é instalado. Os arquivos de dados podem ser de qualquer tipo de arquivo, sendo os mais usados arquivos de texto, XML e banco de dados, como arquivos de .mdb do Microsoft Access.
O diretório de dados destina-se a dados gerenciados pelo aplicativo, que são dados que o aplicativo armazena e mantém explicitamente. Todos os arquivos estáticos e não dependentes não marcados como "dados" no manifesto do aplicativo residirão no Diretório de Aplicativos. Este diretório é onde residem os arquivos executáveis (.exe) e assemblies do aplicativo.
Observação
Quando um aplicativo ClickOnce é desinstalado, seu diretório de dados também é removido. Nunca use o Diretório de Dados para armazenar dados gerenciados pelo usuário final, como documentos.
Marcar arquivos de dados em uma distribuição ClickOnce
Para colocar um arquivo existente dentro do Diretório de Dados, você deve marcar o arquivo existente como um arquivo de dados no arquivo de manifesto do aplicativo ClickOnce. Para obter mais informações, consulte Como incluir um arquivo de dados em um aplicativo ClickOnce.
Ler e gravar no diretório de dados
A leitura a partir do Diretório de Dados requer que o aplicativo ClickOnce solicite permissão de leitura; da mesma forma, gravar no diretório requer permissão de escrita. Seu aplicativo terá automaticamente essa permissão se estiver configurado para ser executado com Confiança Total. Para obter mais informações sobre como elevar as permissões para a sua aplicação usando a Elevação de Permissão ou Implantação de Aplicações Confiáveis, consulte Proteger aplicações ClickOnce.
Observação
Se a sua organização não usar a Implementação de Aplicações Confiáveis e tiver desativado a Elevação de Permissões, a declaração de permissões falhará.
Depois que seu aplicativo tiver essas permissões, ele poderá acessar o Diretório de Dados usando chamadas de método em classes dentro do System.IO. Você pode obter o caminho do Diretório de Dados dentro de um aplicativo ClickOnce do Windows Forms usando a propriedade DataDirectory definida na propriedade CurrentDeployment de ApplicationDeployment. Esta é a forma mais conveniente e recomendada de aceder aos seus dados. O exemplo de código a seguir demonstra como fazer isso para um arquivo de texto chamado CSV.txt que você incluiu em sua implantação como um arquivo de dados.
Observação
A classe ApplicationDeployment e as APIs no namespace System.Deployment.Application não são suportadas no .NET Core e no .NET 5 e versões posteriores. No .NET 7, um novo método de acessar propriedades de implantação de aplicativo é suportado. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não suporta o equivalente aos métodos ApplicationDeployment.
if (ApplicationDeployment.IsNetworkDeployed)
{
try
{
using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
{
MessageBox.Show(sr.ReadToEnd());
}
}
catch (Exception ex)
{
MessageBox.Show("Could not read file. Error message: " + ex.Message);
}
}
Para obter mais informações sobre como marcar arquivos em sua implantação como arquivos de dados, consulte Como incluir um arquivo de dados em um aplicativo ClickOnce.
Você também pode obter o caminho do diretório de dados usando as variáveis relevantes na Application classe, como LocalUserAppDataPath.
A manipulação de outros tipos de arquivos pode exigir permissões adicionais. Por exemplo, se você quiser usar um arquivo de banco de dados (.mdb) do Access, seu aplicativo deverá declarar confiança total para usar as classes xref:System.Data< relevantes>.
Diretório de dados e versões de aplicativos
Cada versão de um aplicativo tem seu próprio Diretório de Dados, que é isolado de outras versões. ClickOnce cria esse diretório independentemente de quaisquer arquivos de dados estarem incluídos na implantação para que o aplicativo tenha um local para criar novos arquivos de dados em tempo de execução. Quando uma nova versão de um aplicativo é instalada, o ClickOnce copia todos os arquivos de dados existentes do Diretório de Dados da versão anterior para o Diretório de Dados da nova versão, sejam eles incluídos na implantação original ou criados pelo aplicativo.
ClickOnce substituirá a versão mais antiga do arquivo com a versão mais recente do servidor se um arquivo de dados tiver um valor de hash diferente na versão antiga do aplicativo como na nova versão. Além disso, se a versão anterior do aplicativo criou um novo arquivo que tem o mesmo nome de um arquivo incluído na implantação da nova versão, o ClickOnce substituirá o arquivo da versão antiga pelo novo arquivo. Em ambos os casos, os arquivos antigos serão incluídos em um subdiretório dentro do diretório de dados chamado .pre, para que o aplicativo ainda possa acessar os dados antigos para fins de migração.
Se você precisar de uma migração de dados mais refinada, poderá usar a API de Implantação do ClickOnce para executar a migração personalizada do Diretório de Dados antigo para o novo Diretório de Dados. Você terá que testar um download disponível usando IsFirstRun, baixar a atualização usando Update ou UpdateAsync, e fazer qualquer trabalho de migração de dados personalizado em seu próprio depois que a atualização for concluída.
Armazenamento isolado
O Armazenamento Isolado fornece uma API para criar e acessar arquivos usando uma API simples. A localização real dos arquivos armazenados é ocultada do desenvolvedor e do usuário.
O Armazenamento Isolado funciona em todas as versões do .NET Framework. O Armazenamento Isolado também funciona em aplicativos parcialmente confiáveis sem a necessidade de concessões de permissão adicionais. Você deve usar o Armazenamento Isolado se o aplicativo precisar ser executado em confiança parcial, mas precisar manter dados específicos do aplicativo.
Observação
No ClickOnce para .NET Core e .NET 5 ou posterior, a confiança parcial, que requer Segurança de Acesso ao Código, não é suportada. No .NET Framework, o uso da Segurança de Acesso ao Código não é uma prática recomendada e não é recomendado.
Para obter mais informações, consulte Armazenamento isolado.
Outros ficheiros locais
Se seu aplicativo precisar trabalhar com ou salvar dados do usuário final, como relatórios, imagens, música e assim por diante, seu aplicativo precisará FileIOPermission ler e gravar dados no sistema de arquivos local.
Dados remotos
Em algum momento, seu aplicativo provavelmente terá que recuperar informações de um site remoto, como dados de clientes ou informações de mercado. Esta seção discute as técnicas mais comuns para recuperar dados remotos.
Acessar arquivos com HTTP
Você pode acessar dados de um servidor Web usando a WebClient ou a HttpWebRequest classe no System.Net namespace. Os dados podem ser arquivos estáticos ou aplicativos ASP.NET que retornam texto bruto ou dados XML. Se os dados estiverem no formato XML, a maneira mais rápida de recuperá-los é usando a XmlDocument classe, cujo Load método usa uma URL como argumento. Para obter um exemplo, consulte Ler um documento XML no DOM.
Você tem que considerar a segurança quando seu aplicativo acessa dados remotos por HTTP. Por padrão, o acesso do aplicativo ClickOnce aos recursos de rede pode ser restrito, dependendo de como o aplicativo foi implantado. Essas restrições são aplicadas para impedir que programas mal-intencionados obtenham acesso a dados remotos privilegiados ou usem o computador de um usuário para atacar outros computadores na rede.
A tabela a seguir lista as estratégias de implantação que você pode usar e suas permissões padrão da Web.
| Tipo de implantação | Permissões de rede padrão |
|---|---|
| Instalação Web | Só pode acessar o servidor Web a partir do qual o aplicativo foi instalado |
| Instalação de compartilhamento de arquivos | Não é possível acessar nenhum servidor Web |
| Instalar CD-ROM | Pode acessar qualquer servidor Web |
Se seu aplicativo ClickOnce não pode acessar um servidor Web devido a restrições de segurança, o aplicativo deve declarar WebPermission para esse site. Para obter mais informações sobre como aumentar as permissões de segurança para um aplicativo ClickOnce, consulte Proteger aplicativos ClickOnce.
Acessar dados por meio de um XML Web Service
Se expuser os seus dados como um serviço Web XML, poderá acessá-los usando um proxy de serviço Web XML. O proxy é uma classe do .NET Framework que você cria usando o Visual Studio. As operações do XML Web Service — como recuperar clientes, fazer pedidos e assim por diante — são expostas como métodos no proxy. Isso torna os serviços da Web muito mais fáceis de usar do que texto bruto ou arquivos XML.
Se o serviço web XML funcionar em HTTP, o serviço estará vinculado às mesmas restrições de segurança que as classes WebClient e HttpWebRequest.
Acesse um banco de dados diretamente
Você pode usar as classes dentro do namespace para estabelecer conexões diretas com um servidor de banco de dados, como o System.Data SQL Server, em sua rede, mas deve levar em conta os problemas de segurança. Ao contrário das solicitações HTTP, as solicitações de conexão de banco de dados são sempre proibidas por padrão sob confiança parcial; você só terá essa permissão por padrão se você instalar seu aplicativo ClickOnce a partir de um CD-ROM. Isso dá total confiança ao seu aplicativo. Para habilitar o acesso a um banco de dados SQL Server específico, seu aplicativo deve solicitá-lo SqlClientPermission ; para habilitar o acesso a um banco de dados diferente do SQL Server, ele deve solicitar OleDbPermission.
Na maioria das vezes, você não precisará acessar o banco de dados diretamente, mas acessá-lo por meio de um aplicativo de servidor Web escrito em ASP.NET ou um XML Web Services. Acessar o banco de dados dessa maneira é freqüentemente o melhor método se seu aplicativo ClickOnce é implantado a partir de um servidor Web. Você pode acessar o servidor em confiança parcial sem elevar as permissões do seu aplicativo.