当文件不存在时,NSIS回调函数使安装程序崩溃

当文件不存在时,NSIS回调函数使安装程序崩溃,nsis,Nsis,我被困在这上面了。 我在subscript.nsh文件的底部有一个回调函数。 如您所见,我正在使用LogicLib: Function InstallFoo MessageBox MB_OK "Within InstallFoo function" ${If} ${FileExists} "$EXEDIR\Modules\foo.zip" MessageBox MB_OK "foo.zip found, do install it!" nsisunz::Unzip "$EXEDIR\Modul

我被困在这上面了。 我在subscript.nsh文件的底部有一个回调函数。 如您所见,我正在使用LogicLib:

Function InstallFoo
MessageBox MB_OK "Within InstallFoo function"
${If} ${FileExists} "$EXEDIR\Modules\foo.zip" 
MessageBox MB_OK "foo.zip found, do install it!"
nsisunz::Unzip "$EXEDIR\Modules\foo.zip" "$INSTDIR\Foo"
${Else}
MessageBox MB_OK "No foo.zip found. Do nothing"
${EndIf}

MessageBox MB_OK "End reached"
FunctionEnd
当'foo.zip'出现时,一切都完全按照我所希望的那样工作,但是当它没有出现时,安装程序就会崩溃,我真的不明白为什么

我希望它也能够处理找不到'foo.zip'的情况,也就是什么都不做。现在发生的情况是,安装程序在 setup.exe-应用程序错误,某个地址的指令引用了某个其他地址的内存。内存无法读取

在我的脚本的部分中有相同类型的代码,无论是否存在zip文件,它都可以正常工作。它只是在这个回调函数中不起作用,所以我开始认为它与回调函数有关

在“foo.zip文件不存在”的情况下,我得到以下消息框:在InstallFoo函数中找不到foo.zip。无所事事

然后是坠机。我在调用回调函数的部分中有一个MessageBox打印输出,也就是说,从回调函数返回后发生的第一件事,但它从未到达那里。 注意,只要foo.zip在那里,一切都正常


有人知道我可能做错了什么吗?

在我看来,每当回调函数中没有任何操作时,我就会崩溃


是不是NSIS为回调函数分配了一些内存,如果没有使用,就会导致崩溃。。??奇怪。

此函数从何处调用?如果你对nsisunz的电话发表评论会怎么样?如果你在这里没有弄清楚,我建议你尝试从他们的主页链接NSIS论坛。NSIS的开发人员经常访问他们的论坛,如果你的问题结构合理,他们通常会很有帮助。