Estou tentando descompactar programaticamente um arquivo compactado.
Eu tentei usar a System.IO.Compression.GZipStream
classe no .NET, mas quando meu aplicativo é executado (na verdade, um teste de unidade), recebo esta exceção:
System.IO.InvalidDataException: o número mágico no cabeçalho GZip não está correto. Verifique se você está passando em um fluxo GZip.
Agora percebo que um .zip
arquivo não é o mesmo que um .gz
arquivo, e que GZip
não é o mesmo que Zip
.
No entanto, como eu posso extrair o arquivo clicando duas vezes manualmente no arquivo compactado e, em seguida, clicando no botão "Extrair todos os arquivos", acho que também deve haver uma maneira de fazer isso no código.
Portanto, eu tentei usar Process.Start()
com o caminho para o arquivo compactado como entrada. Isso faz com que meu aplicativo abra uma janela mostrando o conteúdo do arquivo compactado. Tudo bem, mas o aplicativo será instalado em um servidor sem ninguém por perto para clicar no botão "Extrair todos os arquivos".
Então, como faço para que meu aplicativo extraia os arquivos nos arquivos compactados?
Ou existe outra maneira de fazer isso? Prefiro fazê-lo em código, sem baixar aplicativos ou bibliotecas de terceiros; o departamento de segurança não gosta muito disso ...