2010-07-15 16 views
7

ho notato questo avvertimento nella documentazione per il metodo di NSIS RmDir:

Attenzione: utilizzando RmDir/r $ INSTDIR nel il programma di disinstallazione non è sicuro. Anche se è improbabile , l'utente potrebbe selezionare per installare nella cartella Programmi e così questo comando cancellerà la cartella File intero programma, tra cui altri programmi che non ha nulla a che fare con il programma di disinstallazione.

Questo mi spaventa, dal momento che fino ad ora non avevo considerato questa possibilità e ho avuto quella linea esatta nella mia sceneggiatura. Ma quando ho verificato se ciò accadesse installando il mio programma in una posizione preesistente contenente file preesistenti e poi eseguendo il mio programma di disinstallazione con RmDir /r /REBOOTOK $INSTDIR in esso, i file esistenti non sono stati danneggiati.

Si tratta di un avviso obsoleto? Sto usando NSIS v. 2.46.

Grazie

risposta

6

RmDir/r cancellerà tutto l'albero di directory, se si può, quindi è "non sicuro". Vedere http://nsis.sourceforge.net/Uninstall_only_installed_files per un modo per eliminare solo i file installati

+0

E se dovessi creare una cartella secondaria a $ INSTDIR e mettere tutti i miei dati del programma in là, ricorsivamente eliminare tale sub dir, e poi fare un RmDir regolare sulla $ INSTDIR originale? – Cuga

+0

Beh, sarebbe d'aiuto, ma il problema potrebbe essere ancora lì. Diciamo che la sottocartella si chiama system32 e l'utente si installa su% windir%, quindi eliminerai% windir% \ system32 – Anders

+0

Penso che rischierò di farlo creando un subdir all'interno di INSTDIR chiamato: ... I pensa che questo dovrebbe funzionare. – Cuga

2

RMDir su una directory senza/r (ricorsivo) flag rimuoverà la directory se è vuota. Ad un certo punto hanno aggiunto questa funzione, non sono sicuro di quando.

NSIS Scripting Reference - RMDir

Problemi correlati