【问题标题】:nsis uninstall, FileRead returns nullnsis 卸载,FileRead 返回 null
【发布时间】:2013-12-23 14:04:59
【问题描述】:

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

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

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

函数如下:

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

提前致谢,

史蒂文

【问题讨论】:

    标签: nsis uninstallation


    【解决方案1】:

    FileRead 的语法是:

    FileRead handle user_var(output) [maxlen]
    

    您使用"$line" 调用它:一个字符串,其中插入了变量$line 的值而不是变量。

    在您的FilreRead 调用中将"$line" 替换为$line,应该没问题。

    【讨论】:

    • 不抱歉,不行。代码在 .onInit 函数、Main 部分和 un.onInit 函数中都可以使用,带或不带引号,这不是例程必须运行的地方。它在卸载部分不起作用,不幸的是,这就是它需要的地方。感谢您的建议,但它没有解决问题。
    猜你喜欢
    • 2012-01-26
    • 2017-09-10
    • 1970-01-01
    • 2012-02-12
    • 2011-02-18
    • 2017-11-15
    • 2011-07-25
    • 2016-06-30
    • 2018-06-21
    相关资源
    最近更新 更多