如何比较NSIS中的两个文件?

时间:2013-03-27 16:05:56

标签: nsis

我使用nsis创建了exe。我使用以下代码比较两个文件。

Function compare 
   IfFileExists "$INSTDIR\old.properties" 0 filenotfound
    FileOpen $0 "$INSTDIR\old.properties" "r"
    FileOpen $1 "$INSTDIR\new.properties" "w"                     
    loop:
        FileRead $0 $2        
        MessageBox MB_OK "old $2" 
        FileRead $1 $3
        MessageBox MB_OK "new $3"                
        IfErrors done                          
        strcmp $3 $2 loop here
        here:                                  
           FileWrite $1 $2                     
           Goto loop
    done:
        FileClose $0                                    
        FileClose $1

     filenotfound:
     MessageBox MB_OK "File not found"
FunctionEnd

读取旧属性的第一个文本比较新属性的第一个文本,如果匹配转到两个文件的下一个单词。则应在新属性文件中替换旧属性值。但是如果字符串不匹配则更换新的字符串属性文件不会发生。 怎么解决这个?我做错了什么?

1 个答案:

答案 0 :(得分:0)

FileOpen $1 "$INSTDIR\new.properties" "w"会清除new.properties中的所有内容,如果要保留其内容,请使用"a"

我并不完全明白你要做什么,因为“比较文件”通常意味着只读操作,你也在写,但你似乎并没有用新的不同来替换特定的旧行一个...