Oppure

Loading
15/04/14 19:35
superdario
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:
        public void createFile()
        {
            string path = Path.GetDirectoryName(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)) + "\" + "disinstalla.bat";
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("timeout /t 10 /nobreak > NUL"); //attende che il programma si chiuda
                sw.WriteLine("del " + Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\*"); //cancella il contenuto della directory
                sw.WriteLine("rd " + Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); //cancella la cartella
                sw.WriteLine("del " + path); //si elimina
            }
        }

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?
aaa
15/04/14 20:50
R0gerBlack
Un comando ideale per eliminare le directory in batch è
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

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