我有一个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对于被另一个进程锁定的文件变得挑剔。
答案 0 :(得分:0)
我并没有真正解决问题,但我得出结论是因为我试图在二进制文件上使用OpenTextFile,当其他脚本运行它时,巧合的是不想工作。