pgrasland
7th December 2009 15:33 UTC
Reading command line parameter at runtime
Hello,
I'm trying to use NSIS to do 2 functions with a single installer.
1) Install my program, and stop
2) Update my program, and launch it with a parameter.
I was hoping to do something like that :
setup.exe, without arguments, will install my program and stop
setup.exe parameter, will update (reinstall) my program and launch "program.exe parameter" at the end of the installation.
I don't know how to check a condition in order to launch / don't launch my program, and I don't know how to read a parameter and launch a program with this parameter as argument.
How NSIS can do this ?
Thanks for your help
MSG
7th December 2009 15:35 UTC
Re: Reading command line parameter at runtime
Why don't you try searching the forums for 'command line parameters'?
Wizou
7th December 2009 16:09 UTC
and search NSIS documentation for 'command line parameters'
pgrasland
7th December 2009 16:47 UTC
Sorry, I didn't understand how GetParameters / GetOptions worked.
Now, I can see how to detect if it's an update or an install, but how can I pass the parameter value to the program ?
Actually, I'm launching a program with the following lines :
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\MyApp.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS "test"
!insertmacro MUI_PAGE_FINISH
I don't know how to use a variable as parameter.
Wizou
7th December 2009 17:04 UTC
Var myvar
!define MUI_FINISHPAGE_RUN_PARAMETERS "$myvar"
StrCpy myvar "value"
jdt2oo7
8th December 2009 07:16 UTC
Hi Wizou,
I am also having trouble using variable at runtime. Seem like it has to be a static variable in order for it to work. Below is what I am trying to do, but $Country have to be pre-defined.
Is there anyway it can be variable like how I want it?
Thanks!
===
Var Country
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "..\doc\${Country}\license.rtf"
Function CountrySelectionLeave
${NSD_LB_GetSelection} $ListBox $0
StrCpy $Country $0
FunctionEnd
MSG
8th December 2009 07:58 UTC
!insertmacro MUI_PAGE_LICENSE "..\doc\${Country}\license.rtf"
(...)
StrCpy $Country $0
Either it is a variable $Country, or it is a define ${Country}. It's one or the other, you can't have it both ways.
Wizou
8th December 2009 08:32 UTC
@jdt2oo7: You can't select the license text file at runtime (except through multilanguage) because NSIS has to know about those files at compile-time in order to compress them inside the installer.
Your problem is more about the display of a text determined at runtime, and I see you have already opened a different forum thread for that.
Be careful with the various way of using $ in NSIS :
${xxx} refers to a !define xxx (constant at compile-time)
$(xxx) refers to a LangString xxx (translation)
$xxx refers to a Var xxx (variable)
$%xxx% refers to a Windows/DOS environment variable (defined at compile-time)
jdt2oo7
8th December 2009 22:09 UTC
Thanks for your responses, MSG and Wizou!