ASP.NET FAZER DOWNALOD E DESCOMPACTAR

ALEXPASSOS 17/05/2014 14:23:27
#438317
Olá

Estou precisando fazer uma rotina mais não sei se é possível.

Tem um arquivo *.zip no servidor na internet... ai tenho uma página em asp.net, eu quero criar um link onde o usuário possa fazer o download do arquivo e já descompactar e executar um arquivo que esta dentro.

Isso é possível?

O arquivo que quero executar é um executável... tentei colocar para baixar direto o executável mais o windows bloqueia e não deixa o arquivo ser executado.
OCELOT 17/05/2014 14:42:45
#438318
Não, não é possível, imagine como seria fácil distribuir um vírus se isso fosse possível, seria uma enorme falha de segurança se os browsers permitissem fazer isso.
ALEXPASSOS 17/05/2014 20:20:27
#438322
Que negócio sem graça.

Tem alguma dica?

Preciso distribuir uma aplicação pela internet, já tentei o ClickOnce mais não consegui fazer funcionar.

Inicialmente estava pensando em fazer direto na web (asp.net) mais como não sou muito familiarizado e projeto tem pouco tempo para entregar estou procurando uma solução.
FILMAN 18/05/2014 09:46:56
#438329
Forçar o download você até consegue com o executável compactado, mas a extração e execução fica por conta do usuário!

Creio que se você não esta tentando distribuir um vírus pq esta com muita cara! Caso não seja é só orientar o usuário de fazer a execução do aplicativo!

Hoje em dia é muito difícil uma pessoa não saber instalar um aplicativo ainda mais se for passado um treinamento!

bom vamos lá função para forçar o download via sua própria aplicação!

C#
        public static void Download(string sNomeArquivo, string sCaminho)
{
DirectoryInfo pasta = new DirectoryInfo(HttpContext.Current.Server.MapPath(sCaminho));
FileInfo arquivo = new FileInfo(pasta.FullName + @[Ô]\[Ô] + sNomeArquivo);

HttpContext.Current.Response.Clear(); //Limpar Buffer de Saída

//Cabeçalho que especifica a caixa de dialogo [Ô]Salvar Como[Ô]
HttpContext.Current.Response.ContentType = [Ô]application/octet-stream[Ô];
HttpContext.Current.Response.AddHeader([Ô]Content-Disposition[Ô], [Ô]attachment; filename=\[Ô][Ô] + arquivo.Name + [Ô]\[Ô][Ô]);

//Adiciona ao cabeçalho o tamanho do arquivo para que o browser possa exibir o progresso do download
HttpContext.Current.Response.AddHeader([Ô]Content-Length[Ô], arquivo.Length.ToString());
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.WriteFile(arquivo.FullName);
}


VB.Net
        Public Shared Sub Download(ByVal sNomeArquivo As string, ByVal sCaminho As string)
Dim pasta As New DirectoryInfo(HttpContext.Current.Server.MapPath(sCaminho))
Dim arquivo As New FileInfo(pasta.FullName & [Ô]\[Ô] & sNomeArquivo)

HttpContext.Current.Response.Clear() [ô]Limpar Buffer de Saída

[ô]Cabeçalho que especifica a caixa de dialogo [Ô]Salvar Como[Ô]
HttpContext.Current.Response.ContentType = [Ô]application/octet-stream[Ô]
HttpContext.Current.Response.AddHeader([Ô]Content-Disposition[Ô], [Ô]attachment; filename=[Ô][Ô][Ô] & arquivo.Name & [Ô][Ô][Ô][Ô])

[ô]Adiciona ao cabeçalho o tamanho do arquivo para que o browser possa exibir o progresso do download
HttpContext.Current.Response.AddHeader([Ô]Content-Length[Ô], arquivo.Length.ToString())
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.WriteFile(arquivo.FullName)
End Sub



A expressão HttpContext.Current esta sendo utilizada, pois os métodos estão sendo executados de dentro de uma classe e não de uma página!
Caso for criar o método dentro da página então pode remover a expressão!

Importante ambos os métodos utilizam as Bibliotecas System e System.IO, portanto faça a importação do mesmo para onde for utilizar o método

Espero ter ajudado
Tópico encerrado , respostas não são mais permitidas