2

NSISインストーラースクリプトで、特定のhttpd.confファイルに次の行が含まれているかどうかを確認しようとしています。

「c:\ xxx\yyy.conf」を含める

もしそうなら、私のインストーラースクリプトはそれをファイルに追加しません、さもなければ、それはそれを追加します。

私は{LineFind}を通り抜けましたが、これが私が達成しようとしていることを本当に実現するかどうかはわかりません。

NSISスクリプトからテキストファイルに対して一種の「grep」を実行する最も簡単な方法は何でしょうか。

ありがとうございました !

4

1 に答える 1

2

構文を簡単にするためにLogicLibを使用して、ファイル内の特定の行を検索するためのサンプルを次に示します。行が見つかるとすぐに検索が停止します。このサンプルは、サンプルスクリプト自体で機能します。

# find.nsi : sample for LineFind from TextFunc.nsh
!include "textfunc.nsh"
!include "logiclib.nsh"
OutFile "find.exe"

!define lookfor `Section`   ;will find
;!define lookfor `Sectionn` ;will not find
Var found

Section
    StrCpy $found 0
    ${LineFind} "find.nsi" "/NUL" "1:-1" "GrepFunc"

    ${if} $found = 1 
        MessageBox MB_OK "string found"
    ${else}
        MessageBox MB_OK "string NOT found"
    ${endIf}

SectionEnd

Function GrepFunc
    ${TrimNewLines} '$R9' $R9
    DetailPrint "test for line $R8 `$R9`"
    ${if} $R9 == "${lookfor}" 
        StrCpy $found 1         ;set flag
        Push "StopLineFind"     ;stop find
    ${else}
        Push 0                  ;ignore -> continue
    ${endIf}
FunctionEnd
于 2013-02-19T17:49:27.630 に答える