Go Back   Winamp Forums > Developer Center > NSIS Discussion

Reply
Thread Tools Search this Thread Display Modes
Old 14th June 2001, 09:42   #1
brainz
Junior Member
 
Join Date: Jun 2001
Posts: 5
A quick question ....

I'm trying to use variables as a part of the name of files that are to be installed

So let us change example1.nsi as follows:

; The name of the installer
Name "Example1"

; The file to write
OutFile "example1.exe"

; The default installation directory
InstallDir $PROGRAMFILES\Example1

; The text to prompt the user to enter a directory
DirText "This will install the very simple example1 on your computer. Choose a directory"

; The stuff to install
Section "ThisNameIsIgnoredSoWhyBother?"
; Set output path to the installation directory.
SetOutPath $INSTDIR
;Set $1 to be the location of the files to install
StrCpy $1 c:\WINNT

; Put file there
File $1\notepad.exe

SectionEnd ; end the section

; eof

When I do the compile step, I get the following :

File: "$1\notepad.exe" -> no files found.
Usage: File (/r filespec [...]|/oname=outfile one_file_only)

Am I missing something, or is my syntax wrong, or are variables not allowed in the File statement ?

Any help gratefully accepted ...

TIA

tim
brainz is offline   Reply With Quote
Old 14th June 2001, 10:57   #2
Edgewize
Member
 
Join Date: Apr 2001
Posts: 89
The argument to the File command is the local path to the file when you are building the installer, not the path that will be used when the user runs it. You could try using the /ONAME="blah" flag for File (see the HTML documentation for NSIS) but it may not work across directories. What you really want is to use the SetOutPath command:

SetOutPath $1
File "c:\windows\notepad.exe"
Edgewize is offline   Reply With Quote
Old 14th June 2001, 13:31   #3
brainz
Junior Member
 
Join Date: Jun 2001
Posts: 5
Not sure that you understand why I want to use a variable. I understand totally that the argument to File is the local path when the installer is collecting the files to build the install ...

Suppose I have a long list of files that get installed (>10), and for each new build in the development environment, we put them in a new directory, identified by a new build number, so current release compiled code ends up in

c:\files\devt\app\v1.2\release

and then for my next release it ends up in

c:\files\devt\app\v1.3\release

Suppose I keep the nsi script in c:\files\devt\app, then I will have to modify >10 lines which say

v1.2\release\filename1
v1.2\release\filename2
v1.2\release\filename3
v1.2\release\filename4 ...

Whereas if I could use a variable, in the code I could use

StrCpy $1 v1.3\release

and

File $1\filename1
File $1\filename2
File $1\filename3
File $1\filename4 ...

I am trying to reduce the chance of a developer getting a release wrong by ensuring that the script has to be changed in the minimum number of places. I guess a better solution is to put the .nsi file in

c:\files\devt\app\v1.2\release

and then use

File filename1
File filename2
File filename3
File filename4 ...

which is what I will probably do ... but from a code control perspective I'd like to be able to do the above ...

(Note I'm clear that none of this affects where the file ultimately gets installed by the installer that is built !!)

Also from the documentation, it suggests that you might be able to do this, under Variables it says

"The following are variables that are usable in Instructions"

and under "Instructions - General purpose, basic instructions" we find File.

To me this suggest that you might be able to do it.

Perhaps this is a bug, perhaps not ... depends on your view...

Don't take any of this the wrong way Edge, I think NSIS is a great piece of software, and the comments I make are just things I notice that I think are worth comment ...

Keep up the great work ...

thanks

tim
brainz is offline   Reply With Quote
Old 14th June 2001, 17:07   #4
Edgewize
Member
 
Join Date: Apr 2001
Posts: 89
Doh, I understand. The *local* directory name is a variable. I get it now

Try the !cd change-local-directory-during-the-compile command. I don't think that variables are expanded while compiling, only while the installer is running, but you could use

!cd "c:\files\devt\app\v1.2\release"

before the File commands, and it should work just fine.

Edgewize is offline   Reply With Quote
Reply
Go Back   Winamp Forums > Developer Center > NSIS Discussion

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump