我在临时文件中比较了两个文件和存储的不匹配值。我已提到这个link。之后,从临时文件中读取值并替换为原始文件。最后我试图删除临时文件。除临时文件删除外,所有进程都正常工作。
我使用了以下代码:
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
即使我也无法手动修改这三个文件[temp,backup,original]。如果我修改并点击显示为的保存提示信息,请检查此文件是否打开了另一个程序“ 我已经在文件使用完成后使用文件关闭。 即便我也试过这段代码
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
但是不删除临时文件。如何删除临时的这个文件?
有人可以帮助我吗?
提前致谢
答案 0 :(得分:1)
原始写入功能缺少FileClose
答案 1 :(得分:1)
您是否在脚本中请求管理员权限?
RequestExecutionLevel admin
如果您尝试编辑需要管理员权限进行编辑的文件(例如C:\ Program Files中的文本文件),某些应用程序(如Notepad ++)将显示“请检查此文件是否打开了另一个程序”消息。