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を使用しています。