NSISdl :: download无效

时间:2016-02-15 05:12:42

标签: nsis

我在下面写了代码来读取一个文本文件,其中包含服务器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

1 个答案:

答案 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时需要执行相同的操作。