【问题标题】:vbscript not working from within nsis installer but it works when i manually run itvbscript 在 nsis 安装程序中不起作用,但是当我手动运行它时它可以工作
【发布时间】:2012-07-10 23:28:19
【问题描述】:

我有一个在 sqlite 文件(纯文本)中搜索字符串的 VBscript。它由我的 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 对文件被另一个进程锁定感到很挑剔。

【问题讨论】:

  • 如何在 vbscript 中创建 strFile 路径?
  • 我已经确认 strFile 吐出了正确的文件路径。我相信问题在于我试图将 sqlite 文件作为文本文件读取,但我不确定。
  • 那为什么它会从命令行工作呢?
  • strFile 是完整路径还是相对路径?

标签: vbscript nsis binary-search wsh


【解决方案1】:

我并没有真正解决这个问题,但我得出的结论是,我试图在一个二进制文件上使用 OpenTextFile,而这个二进制文件恰好在另一个脚本运行时不想工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多