2012-08-15 97 views
2

我正在制作一个NSIS脚本,用于检查是否安装了以前版本的应用程序。如果是这样,它会询问是否应该从这个以前的版本导入配置文件。所以我有一个全球变量配置文件我试图在运行时设置取决于用户是否选择“是”或“否”。我遇到的问题是编译时抱怨文件:“$ {XMLConfigDir} *。xml” - >找不到文件。由于XMLConfigDir尚未设置,因此请使用。那么无论如何要在运行时设置一个变量?运行时设置变量

回答

2

我的问题的解决方案是使用内置函数的CopyFiles而不是SetOutPath,然后使用File。

6

有声明变量(瓦尔命令)和符号之间的差异(与定义限定命令!):

Var /GLOBAL myVar ; This is variable -> use it as $myVar 

!define mySymbol; This is symbol -> use it as ${mySymbol} 

尝试这种情况:

!define XMLConfigDir "C:\some_path_to_XML\subdir\" 

Section "Main Section" 
     File "${XMLConfigDir}*.xml" 
SectionEnd 

符号也可以设置在安装程序运行时期间使用命令行开关使用/D

+0

/D开关也可以在编译期间使用:makensis.exe/DmySymbol =“C:\ some_path_to_XML \ subdir \”script_to_compile.nsi – Slappy 2012-08-15 18:02:02

+0

欢呼的信息,但我不明白它如何回答我的问题能够使用File命令和一个在编译时未知但在运行时确定的变量。 – Harry 2012-08-16 09:48:10