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.
A maioria dos aplicativos consome ou produz dados. O ClickOnce oferece várias opções para ler e gravar dados, local e remotamente.
Dados Locais
Com o 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 Documentos e Configurações do usuário. Qualquer arquivo incluído em um aplicativo ClickOnce e marcado como um arquivo de "dados" é copiado para esse diretório quando um aplicativo é instalado. Os arquivos de dados podem ser de qualquer tipo de arquivo, sendo os mais usados como texto, XML e arquivos de banco de dados, como o Microsoft Access .mdb arquivos.
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 que não são dependências, que não estão marcados como "dados" no manifesto do aplicativo residirão no Diretório do Aplicativo. Esse diretório é onde residem os arquivos e assemblies executáveis (.exe) 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 do 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 do Diretório de Dados requer que seu aplicativo ClickOnce solicite permissão de leitura; similarmente, gravar no diretório requer permissão de gravação. Seu aplicativo terá essa permissão automaticamente se estiver configurado para ser executado com Total Confiança. Para obter mais informações sobre como elevar permissões para seu aplicativo usando a Elevação de Permissão ou a Implantação de Aplicativos Confiáveis, consulte aplicativos ClickOnce Seguros.
Observação
Se sua organização não usar a Implantação de Aplicativo Confiável e tiver desativado a Elevação de Permissão, 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 em um aplicativo ClickOnce do Windows Forms usando a propriedade DataDirectory definida na propriedade CurrentDeployment de ApplicationDeployment. Essa é a maneira mais conveniente e recomendada de acessar 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 ApplicationDeployment classe e as APIs no System.Deployment.Application namespace não são compatíveis com .NET Core e .NET 5 e versões posteriores. No .NET 7, há suporte para um novo método de acesso às propriedades de implantação do aplicativo. Para obter mais informações, consulte as propriedades de implantação do Access ClickOnce no .NET. O .NET 7 não dá suporte ao 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.
Manipular outros tipos de arquivos pode exigir permissões adicionais. Por exemplo, se você quiser usar um arquivo de banco de dados do Access (.mdb), seu aplicativo deverá declarar total confiança para usar as classes xref:System.Data< relevantes>.
Versões do diretório de dados e do aplicativo
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 serem 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 for instalada, o ClickOnce copiará 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, independentemente de terem sido incluídos na implantação original ou criados pelo aplicativo.
ClickOnce substituirá a versão mais antiga do arquivo pela 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 com o 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 mais refinada de dados, poderá usar a API de Implantação clickOnce para executar a migração personalizada do diretório de dados antigo para o novo Diretório de Dados. Você precisará testar um download disponível usando IsFirstRun, baixar a atualização usando Update ou UpdateAsyncfazer qualquer trabalho de migração de dados personalizados por conta própria após a conclusão da atualização.
Armazenamento isolado
O Armazenamento Isolado fornece uma API para criar e acessar arquivos usando uma API simples. O local real dos arquivos armazenados está oculto 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 deve manter dados específicos do aplicativo.
Observação
No ClickOnce para .NET Core e .NET 5 ou posterior, a confiança parcial, que requer a Segurança de Acesso ao Código, não tem suporte. 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 arquivos locais
Se o aplicativo precisar trabalhar com ou salvar dados do usuário final, como relatórios, imagens, músicas 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 do cliente 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 tanto a classe WebClient quanto a classe HttpWebRequest no namespace System.Net. Os dados podem ser arquivos estáticos ou ASP.NET aplicativos que retornam dados de texto bruto ou XML. Se os dados estiverem no formato XML, a maneira mais rápida de recuperar os dados é 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ê precisa 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 seu 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 da Web | Só é possível acessar o servidor Web do qual o aplicativo foi instalado |
| Instalação do Compartilhamento de Arquivos | Não é possível acessar nenhum servidor Web |
| instalação do CD-ROM | Pode acessar todos os servidores Web |
Se o aplicativo ClickOnce não puder acessar um servidor Web devido a restrições de segurança, o aplicativo deverá declarar WebPermission para esse site. Para obter mais informações sobre como aumentar as permissões de segurança para um aplicativo ClickOnce, consulte Aplicativos ClickOnce Seguros.
Acessar dados por meio de um serviço Web XML
Se você expor seus dados como um serviço Web XML, poderá acessar os dados 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 serviço Web XML, como recuperar clientes, fazer pedidos e assim por diante, são expostas como métodos no proxy. Isso torna os serviços Web muito mais fáceis de usar do que o texto bruto ou arquivos XML.
Se o serviço Web XML operar por HTTP, o serviço estará sujeito às mesmas restrições de segurança que as classes WebClient e HttpWebRequest.
Acessar um banco de dados diretamente
Você pode usar as classes dentro do System.Data namespace para estabelecer conexões diretas com um servidor de banco de dados, como o SQL Server em sua rede, mas você deve considerar 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 instalar seu aplicativo ClickOnce de um CD-ROM. Isso fornece total confiança ao aplicativo. Para habilitar o acesso a um banco de dados específico do SQL Server, 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 o acessará por meio de um aplicativo de servidor Web escrito em ASP.NET ou em um serviço Web XML. Acessar o banco de dados dessa maneira é frequentemente o melhor método se o aplicativo ClickOnce for implantado de um servidor Web. Você pode acessar o servidor em confiança parcial sem elevar as permissões do aplicativo.