我在下面写了代码来读取一个文本文件,其中包含服务器url和pre计算的md5 update.zip文件的总和。该文件名为temp.txt。文本文件的内容如下所示
http://10.212.8.230:8080/update.zip
daf6de1b3d8fa32f276e26566311515f
我读取文本文件并将url字符串保存在%path变量中。我的问题是当我将这个$ path传递给NSISdl :: download然后它在运行时给出了错误,比如'PKU'。但是当我传递相同的网址硬编码(手动没有从文件读取然后它工作)。与MD5总和相同的情况。我从temp.txt文件中读取它并存储在一个变量中,当我对字符串进行预占时,即使字符串相同,它也显示我不一样。但是,当我给它硬编码然后它工作。
任何人都可以告诉我为什么会这样,我在做错了。我尽我所能,但我无法解决它。如何从文本文件中读取它并将其传递给从服务器下载???
var path;variable to save download url downloaded from temp.txt file
var downloaded_md5;variable to save md5 sum of update.zip downloaded from temp.txt file
var local_md5;used to store md5 sum of update.zip after downloading the update.zip
Section
FileOpen $0 "$INSTDIR\temp\temp.txt" r ;reading file
FileRead $0 $1
StrCpy $path $1;storing url in $path
NSISdl::download "$path" "$INSTDIR\temp\update.zip";passing $path to download
Pop $R0 ;Get the return value
StrCmp $R0 "success" ExtractFiles
DetailPrint "Update downloading failed"
MessageBox MB_OK "Update downloading failed: $R0"
Quit
ExtractFiles:
FileRead $0 $1
StrCpy $downloaded_md5 $1;storing md5 string
md5dll::GetMD5File "$INSTDIR\temp\update.zip"
Pop $0
StrCpy $local_md5 $0
StrCmp $downloaded_md5 $local_md5 same notsame
same:
MessageBox MB_OK "MD5 is same"
goto End
notsame:
MessageBox MB_OK "MD5 is not same"
goto End
End:
Quit
SectionEnd
答案 0 :(得分:1)
Fileread读取直到读取换行符或空字节。回车/换行符号包含在结果字符串中,因此您需要修剪字符串。
请参阅StrTrimNewLines。
您的代码应该是:
!include "StrFunc.nsh"
${StrTrimNewLines}
var path;variable to save download url downloaded from temp.txt file
var downloaded_md5;variable to save md5 sum of update.zip downloaded from temp.txt file
var local_md5;used to store md5 sum of update.zip after downloading the update.zip
Section
FileOpen $0 "$INSTDIR\temp\temp.txt" r ;reading file
FileRead $0 $1
${StrTrimNewLines} $path $1 ;storing url in $path and removing newline
[....]
阅读MD5sum时需要执行相同的操作。