Реализовать проверку зависимостей с помощью параметров командной строки в скриптах NSIS - PullRequest
0 голосов
/ 06 декабря 2011

Моя цель - узнать, используете ли вы какую-либо проверку или фрагмент кода, чтобы определить, есть ли какая-то зависимость при передаче параметров командной строки NSIS в скопированную установку с использованием установки без вывода сообщений (/ S параметр).

Пример NSIS: http://nsis.sourceforge.net/Get_command_line_parameter_by_name

Например, если у меня есть три параметра: 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>

Спасибо!

Я очень надеюсь, что вы поделитесь хотя бы фрагментом кода ... если не целым функциональным кодом.

1 Ответ

0 голосов
/ 07 декабря 2011
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
...