Implementere avhengighet sjekk med kommandolinje parametere i NSIS skript

stemmer
0

Mitt mål er å vite hvis du bruker noen sjekk eller kode Snipp å avgjøre om ther er noen-avhengighet ved passering NSIS kommandolinje params å copiled oppsett ved hjelp Silent installasjon (/ S param).

Den NSIS prøve: http://nsis.sourceforge.net/Get_command_line_parameter_by_name

For eksempel, hvis jeg har tre parametere: Setup.exe / S param1 = param2 = param3 =

Hvordan sjekke følgende 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>

Takk skal du ha!

Jeg håper virkelig du vil dele minst kode Snipp ... om ikke hele funksjonell kode.

Publisert på 06/12/2011 klokken 06:36
kilden bruker
På andre språk...                            


1 svar

stemmer
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
Svarte 06/12/2011 kl. 17:31
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more