Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - disinstallazione - eliminare file
Forum - C# / VB.NET - disinstallazione - eliminare file

Avatar
superdario (Normal User)
Newbie


Messaggi: 6
Iscritto: 03/07/2013

Segnala al moderatore
Postato alle 21:35
Martedì, 15/04/2014
Ciao a tutti, sto facendo una sorta di disinstallazione attraverso un file bat perchè il programma che ho realizzato è molto leggero per cui volevo evitare di appesantirlo con delle api apposite, anche perchè deve rimanere leggero. Il mio problema sta nel fatto che non riesco a cancellare la cartella dove è contenuto il mio programma.
In questo modo creo il file bat che mi permette di eliminare il mio programma:
Codice sorgente - presumibilmente C#

  1. public void createFile()
  2.         {
  3.             string path = Path.GetDirectoryName(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)) + "\\" + "disinstalla.bat";
  4.             using (StreamWriter sw = File.CreateText(path))
  5.             {
  6.                 sw.WriteLine("timeout /t 10 /nobreak > NUL"); //attende che il programma si chiuda
  7.                 sw.WriteLine("del " + Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\*"); //cancella il contenuto della directory
  8.                 sw.WriteLine("rd " + Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); //cancella la cartella
  9.                 sw.WriteLine("del " + path); //si elimina
  10.             }
  11.         }


Il problema è che una volta che avvio il file bat, cancella il mio programma, tutti i file che utilizza e si auto elimina, ma non elimina la cartella che contiene il programma!
Una volta che eseguo la procedura di disintallazione, anche andando a cancellare la cartella con i comandi da prompt la cancellazione non avviene e mi appare un errore. Non riesco a capire come mai! Come faccio ad eliminare la cartella che contiene l'eseguibile del programma?

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 22:50
Martedì, 15/04/2014
Un comando ideale per eliminare le directory in batch è
Codice sorgente - presumibilmente Plain Text

  1. rmdir /q /s "Directory"



Assicurati che la tua directory da eliminare sia in mezzo alle apici
Dovrebbe venire il tuo codice quindi come una cosa del genere

Codice sorgente - presumibilmente Plain Text

  1. sw.WriteLine("rmdir /q /s \"" + path + "\"");


PM Quote