0

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

終了機能

参考までに、nsisは別のプロセスによってファイルがロックされていることに煩わされていたため、nsisコマンドの代わりにVBscriptを使用しています。

4

1 に答える 1

0

私は実際には問題を解決しませんでしたが、他のスクリプトが実行しているときに偶然に動作したくないバイナリファイルでOpenTextFileを使用しようとしていたためだと結論付けました。

于 2012-07-31T00:24:57.720 に答える