0

我比较了两个文件并将不匹配的值存储在临时文件中。我已经提到了这个链接。之后从临时文件中读取值并替换为原始文件。最后我试图删除临时文件。除了临时文件删除之外,所有过程都运行良好。

我使用了以下代码:

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 

但是临时文件没有被删除。如何删除临时这个文件?

有人能帮我吗?

提前致谢

4

2 回答 2

1

缺少原始写入功能FileClose

于 2013-04-01T19:05:14.493 回答
1

您是否在脚本中请求管理员权限?

RequestExecutionLevel admin

如果您尝试编辑需要管理员权限才能编辑的文件(例如 C:\Program Files 中的文本文件),某些应用程序(如 Notepad++)会显示“请检查此文件是否打开了另一个程序”消息。

于 2013-04-02T14:03:47.780 回答