vbscript不能在nsis安装程序中运行,但是当我手动运行它时它可以工作

时间:2012-07-10 23:28:20

标签: vbscript nsis binary-search wsh

我有一个VBscript,用于搜索sqlite文件(纯文本)中的字符串。它由我的NSIS安装程序运行以确定安装参数。

当我从命令行运行脚本时,它全部按计划运行,并找到它在文件中查找的字符串。但是,当我从nsis安装程序中通过ExecWait运行它时,它突然说它再也找不到字符串了。它并没有说它无法打开文件或任何其他错误,它只是返回该字符串不存在。

这是来自nsis脚本的exec:

ExecWait `"$SYSDIR\wscript.exe" "$PLUGINSDIR\myscript.vbs" "success" "failure" "done" "1"` $2

这是导致我如此麻烦的障碍:

Function LookforValue(strFile)
    iStatus = 0
    Done = false
    Const ForReading = 1

    MsgBox(S_PATTERN)
    MsgBox(F_PATTERN)   
    MsgBox(D_PATTERN)       

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    objFile = 0
    Set objFile = objFSO.OpenTextFile(strFile, ForReading)
        Do Until objFile.AtEndOfStream
            strSearchString = objFile.ReadLine
            colMatchesS = InStr(strSearchString,S_PATTERN)
            colMatchesF = InStr(strSearchString,F_PATTERN)
            colMatchesD = InStr(strSearchString,D_PATTERN)

            If colMatchesS > 0 Then
                iStatus = 2
                exit do
            End If

            If colMatchesF > 0 Then
                iStatus = 3
                exit do
            End If

            If colMatchesD > 0 Then
                iStatus = 4
                exit do
            End If

        Loop
    objFile.Close



    LookforValue = iStatus

结束功能

仅供参考我正在使用VBscript而不是nsis命令,因为nsis对于被另一个进程锁定的文件变得挑剔。

1 个答案:

答案 0 :(得分:0)

我并没有真正解决问题,但我得出结论是因为我试图在二进制文件上使用OpenTextFile,当其他脚本运行它时,巧合的是不想工作。