Как использовать константу для указания пути к файлу в NSIS? - PullRequest
3 голосов
/ 10 августа 2011

Я хотел бы использовать константу для указания каталога, в котором находятся файлы, которые будут установлены, например:

; -*-nsis-*-

Name "ndhtest"
OutFile "FooStartMenuTest.exe"

!define FOO_SRC c:\users\nhughes\foo

InstallDir "$PROGRAMFILES\Initech\"

Page instfiles
Section
  SetOutPath $INSTDIR
  File "$FOO_SRC\foo.bat"    ;; <-- line 15 here
  CreateDirectory $SMPROGRAMS\Initech
  CreateShortCut $SMPROGRAMS\Initech\Foo.lnk $INSTDIR\foo.bat "" \
    "$FOO_SRC\foo_logo.ico"  ;; <-- line 18 here
SectionEnd

Это вызывает следующее сообщение об ошибке (в emacs, с использованием nsis-mode):

Processing script file: "c:/users/nhughes/STARTM~1.NSI"
Name: "ndhtest"
OutFile: "FooStartMenuTest.exe"
XPStyle: on
!define: "FOO_SRC"="c:\users\nhughes\foo"
InstallDir: "$PROGRAMFILES\Initech\"
Page: instfiles
Section: ""
SetOutPath: "$INSTDIR"
File: "$FOO_SRC\foo.bat" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
   /oname=outfile one_file_only)
Error in script "c:/users/nhughes/STARTM~1.NSI" on line 15 -- aborting creation process

Если я заменим строку 15 на

File c:\users\nhughes\foo\foo.bat

, а строку 18 на

  "c:\users\nhughes\foo\foo_logo.ico"

, тогда она будет работать нормально.

1 Ответ

6 голосов
/ 10 августа 2011

Попробуйте использовать ${FOO_SRC}.

...