nsis uninstall,FileRead返回null

时间:2013-12-06 09:22:20

标签: nsis uninstaller

我编写了一个NSIS安装程序,在卸载时必须删除它安装的所有文件。

我已经在安装时将已安装文件的列表写入清单文件,并且该文件正常工作。

然而,在卸载时,清单的FileRead什么都不返回;它仍然读取文件的每个记录,但应该包含行内容的变量为null。有趣的是代码在un.onInit函数中有效,但在卸载部分中没有。谁能告诉我为什么会这样呢?

这是功能:

StrCpy $R6 "$myIni\manifest.pf"

FileOpen $6 "$R6" r

FileRead $6 "$line"

${Do} 
    Delete /REBOOTOK "$INSTDIR$line"

    IfErrors fail continue
fail: 
    DetailPrint "Delete failed, file=$INSTDIR$line"

    MessageBox MB_ICONSTOP "path=$line"

    Abort
continue:
    DetailPrint "Delete $INSTDIR$line"

    FileRead $6 "$line"
${LoopUntil} $line == ""

FileClose $6

提前致谢,

史蒂芬

1 个答案:

答案 0 :(得分:0)

FileRead的语法是:

FileRead handle user_var(output) [maxlen]

您正在使用"$line"调用它:内部使用变量$line的值而不是变量进行插值的字符串。

"$line"来电中将$line替换为FilreRead,这应该没问题。