2012-03-13 3 views
0

У меня есть вопрос, связанный с NSIS. У меня есть установщик, созданный NSIS в папке «c:/Installer/Installer.exe». Когда я запускаю программу установки, он создает файл журнала («c:/Installer/installlog.txt») в папке установки. После успешного запуска Installer.exe я хочу удалить только файл installlog.txt из «c:/Installer».Не удалось удалить файл с помощью NSIS

У меня есть следующие функции

Function .onInstSuccess 
    call cleanUp 
    ifSilent 0 +2 
      ${LogText} "INFO :: Application has been installed" 
      CopyFiles "$EXEDIR\${INSTALL_LOG}" "$Dir\LogFiles\" 
      IfFileExists "$Dir\LogFiles\{INSTALL_LOG}" DoNothing CopyAgain 
      CopyAgain: 
       CopyFiles "$DIR\${INSTALL_LOG}" "$Dir\LogFiles\" 
       Delete "$DIR\${INSTALL_LOG}" 
       goto DoNothing 
      DoNothing:   
      SetOutPath $EXEDIR  
      Delete "$EXEDIR\*.log" ;....................**but the file does not get deleted** 
FunctionEnd 

может кто-нибудь пожалуйста, скажите мне, как я могу сделать эту работу. Мне нужно исправить это как можно скорее, помощь по этому поводу

+0

Вы хотите удалить '$ DIR \ $ {INSTALL_LOG}'? Что у вас есть в журнале подробностей, когда файл должен был быть удален, сообщение об ошибке? – Seki

+0

Если файл используется, его нельзя удалить, вы должны либо закрыть его, либо использовать/REBOOTOK, чтобы указать команду delete для ее удаления при перезагрузке – zenpoy

ответ

1

Я предполагаю, что вы используете these протоколирование макросов. Вы должны позвонить ${LogSetOff} после последнего вызова ${LogText}, чтобы дескриптор файла был закрыт, и вы должны удалить его.

Кроме того, с помощью Delete "$EXEDIR\*.log" не является хорошей идеей, вы уже знаете имя ...

Смежные вопросы