2013-04-01 5 views
0

Я сравнил два файла и сохранил несоответствующие значения во временном файле. Я упомянул об этом link. После этого прочитайте значения из временного файла и замените их в исходном файле. Наконец, я попытался удалить временный файл. Весь процесс работает отлично, за исключением временного удаления файлов.Почему временный файл не удаляется в NSIS?

Я использовал следующий код:

page custom twofilecompare 
page custom originalwrite 
     Function twofilecompare 
     FileOpen $0 "$INSTDIR\backup.properties" "r" 
     FileOpen $1 "$INSTDIR\orginal.properties" "r" 
     #IfFileExists "$INSTDIR\temp.properties" 0 +1 
     #Delete /REBOOTOK "$INSTDIR\temp.properties" 
     FileOpen $R0 "$INSTDIR\temp.properties" "w" 
     ClearErrors    

     loop: 
      FileRead $0 $2 
      ${If} $2 == "$\r$\n" 
      Goto loop 
      ${EndIf} 
      FindClose $0 


      FileRead $1 $3 
      IfErrors done   
      strcmp $2 $3 loop here 
      here: 
       FileWrite $R0 $2 
       Goto loop 

     done: 
      FileClose $0          
      FileClose $1 
      FileClose $R0 
     FunctionEnd 

     Function originalwrite 
    IfFileExists "$INSTDIR\temp.properties" 0 filenotfound 
    FileOpen $0 "$INSTDIR\temp.properties" "r" 
    loop: 
      FileRead $0 $1 
      IfErrors done 
      //do some stuff 

    done: 
     **IfFileExists "$INSTDIR\resource\temp.properties" 0 filenotfound 
     Delete /REBOOTOK "$INSTDIR\temp.properties"** 
    filenotfound: 
    MessageBox MB_OK "file not found" 
    FunctionEnd 

Даже я наклоняю в состоянии изменить эти три файла [темп, резервное копирование, оригинал] вручную also.if я изменить и нажмите кнопку Сохранить быстрое сообщение, отображаемое в «, пожалуйста, проверьте, этот файл открыл другую программу « Я также использовал файл закрыт после использования файла как завершенный. Даже я попробовал этот код также

Function .onInstSuccess 
IfFileExists "$INSTDIR\temp.properties" notfound 
MessageBox MB_OK "file exists" 
Delete /REBOOTOK $INSTDIR\temp.properties 
Goto done 
notfound: 
MessageBox MB_OK "file not found" 
Done: 
MessageBox MB_OK "file deleted" 
FunctionEnd 

Но временный файл не удаляется. Как удалить временный этот файл?

Может кто-нибудь мне помочь?

Заранее спасибо

ответ

1

originalwrite функция отсутствует FileClose

+0

Спасибо.Он работал.После установки я не могу отредактировать bakcup и оригинальный файл свойства. Открывается окно с подсказкой и отображается «пожалуйста, проверьте, открыл ли этот файл другую программу» .but я закрыл три файла. Как решить это? – Ami

1

Вы запрашиваете права администратора в вашем скрипте?

RequestExecutionLevel admin 

Некоторые приложения, такие как Notepad ++ будет отображаться сообщение «пожалуйста, проверьте, если этот файл открыт другой программой», если вы пытаетесь отредактировать файл, который нуждается в правах администратора для редактирования (например, в виде текстового файла в C: \ Program Files).

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