0

私の目標は、サイレントインストール(/ Sパラメータ)を使用してNSISコマンドラインパラメータをコピーしたセットアップに渡すときにチェックやコードスニップを使用して依存するかどうかを知ることです。 。NSISスクリプトのコマンドラインパラメータを使用して依存性チェックを実装する

NSISサンプル:たとえばhttp://nsis.sourceforge.net/Get_command_line_parameter_by_name

、私は3つのparamsを持っている場合は、次のSetup.exe/Sのparam1 = "" PARAM2 = "" param3 = ""

次secanrioをチェックする方法:

${if} <Param1 is passed to Setup.exe> 
    <Param2 must ALSO be passed to Setup.exe> 
${else} 
    <Error message notifiing that Param1 is present, but dependent Param2 param is missing in CMD parameters> 

ありがとうございます!

少なくともコードスニップを共有することをお勧めします。機能コード全体ではない場合は、

答えて

0
outfile test.exe 
requestexecutionlevel user 
silentinstall silent ;always force silent in this sample 
!include LogicLib.nsh 
!include FileFunc.nsh 

Function StripOptPrefix 
Exch $0 
Push $1 
StrCpy $1 $0 1 
${If} $1 == "=" 
${OrIf} $1 == ":" 
    StrCpy $0 $0 "" 1 
${EndIf} 
Pop $1 
Exch $0 
FunctionEnd 
!macro StripOptPrefix var 
Push ${var} 
call StripOptPrefix 
Pop ${var} 
!macroend 

Section 
${GetParameters} $0 
${If} $0 == "" 
    ;No parameters, lets run the tests 
    ExecWait '"$exepath" /param1=foo' 
    ExecWait '"$exepath" /param1=foo /param2=bar' 
${Else} 
    ${GetOptions} $0 "/param1" $1 
    ${If} ${Errors} 
     # /param 1 not used, do nothing? 
    ${Else} 
     ${GetOptions} $0 "/param2" $2 
     ${If} ${Errors} 
      MessageBox mb_iconstop "Missing /param2, required by /param1" 
      Quit 
     ${Else} 
      !insertmacro StripOptPrefix $1 
      !insertmacro StripOptPrefix $2 
      MessageBox mb_ok "1=$1$\n2=$2" 
     ${EndIf} 
    ${EndIf} 
${EndIf} 
SectionEnd 
関連する問題