Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fernando morais

Buscar pasta ".zip" abrir e executar arquivo C#

Recommended Posts

Olá,

 

Boa noite galera sou novo na programação, vou explica o que estou tentando fazer.

estou fazendo um gerenciador de aplicações, só que estou com uma dificuldade de localizar a pasta e abrir um executável que nela se encontra.

como funciona o gerenciador: ele lista todas as aplicações no combobox, ao selecionar a aplicação que deseja ele verifica se já esta instalado se tiver ele abrira a aplicação, se não tiver ele vai te retorna um aviso falando que não esta instalado e pergunta se você quer instalar, agora chegou no problema pq as aplicações sempre muda de versão então não posso mapear o caminho direto como estava antes, a unica coisa que não muda e a numeração.

Caminho da pasta: INSTALADOR_ROBO_1001_ManutenirDocumentoCompras_V6.0_Producao.zip

Então eu tenho que localizar a pasta pelo numero mais não estou conseguindo fazer isso o máximo que eu fiz foi lista tudo. abaixo vai o código.

 

 

 private void button1_Click(object sender, EventArgs e)

        {
            DirectoryInfo Dir = new DirectoryInfo(@"D:\001.01.01. Contracts Load");
            FileInfo[] Files = Dir.GetFiles("*", SearchOption.AllDirectories);
            foreach(FileInfo File in Files)
            {
                
              listBox1.Items.Add(File.FullName);
            }


        }
se alguém tiver algo diferente pode mandar toda ajuda e bem vinda.
se fiz alguma coisa errada me desculpe só novo na área. Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera desculpa a demora pra responder. vamos lá.

 

a parte boa eu que eu conseguir localizar a pasta pela numeração a ruim e que não estou conseguindo descompactar essa pasta para poder executar o EXE que existe dentro dela.

 

já adicionei as referências mais continua pedindo uma isso aki "System.IO.Compression.FileSystem.dll".

eu tb queria saber se existe uma maneira de descompactar sem salvar, tipo no temp.

 

abaixo o código :

 

 

private void button1_Click(object sender, EventArgs e)
{
DirectoryInfo Dir = new DirectoryInfo(@"D:\001.01.01. Contracts Load");//esse o caminho que vai ser varrido
FileInfo[] Files = Dir.GetFiles("*1007*", SearchOption.AllDirectories);//vai procurar pelo 1007
foreach(FileInfo File in Files)
{
string zipPath = Files[0].ToString();
string extractPath = @"D:\download";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))//aki ele trava.
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
{
entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
}
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi. Você tem uma pasta compactada. Então você quer descompactá-la, mas via código?

Você incluiu essa dll no projeto e deu um using no arquivo?

 

Qual o erro que está sendo exibido pelo Visual Studio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo !!!!!

 

o erro é esse !!

 

 

 

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in System.IO.Compression.FileSystem.dll
Additional information: Could not find file 'C:\Users\Fernando\Desktop\teste\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\INSTALADOR_ROBO_1007_ManutenirRequisicaoCompras_V2.8_Producao.zip'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o erro está informando que o programa não está encontrando o arquivo zipado na pasta:

 

"C:\Users\Fernando\Desktop\teste\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\"

 

Que é a pasta de debug do seu projeto.

 

Na verdade, esse parte do código eu não entendi o que você pretende fazer:

            foreach(FileInfo File in Files)
            {
                string zipPath = Files[0].ToString();
                string extractPath = @"D:\download";

Primeiro porque vc não fechou as chaves.

Segundo, você faz um foreach em busca de objetos FileInfo (File), mas não o usa o no bloco de código.

 

Há algo errado porque o caminho que você estipulou não está sendo encontrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

string zipPath = Files[0].ToString() <- Pega o nome do arquivo com o qual você está trabalhando, não o "Caminho + Nome".


ZipArchive archive = ZipFile.OpenRead(zipPath)//Trava pois se você não passar o nome do caminho completo, ele vai por padrão buscar na pasta onde está o .exe, no caso bin/debug... e como você só está passando o nome do arquivo, ele busca na bin/debug e não encontra nada, por isso o FileNotFoundException

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dan forech e por eu estava listando tudo em um listbox pra ver se funcionava.

 

vitor eu entendi oke vc disse!!! eu capturei um arquivo e na hora de descompactar tinha que ter passado o caminho desse arquivo não o próprio.

 

agora não sei oke fazer se alguem tiver uma solução por favor me ajude!!!

 

resumindo o que desejo: varrer uma caminho passando um parâmetro ex "pasta 1007" lembrando que nesse caminho existe varias outras com outras numerações, feito isso descompactar e executar um exe existente dentro dela,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.