【问题标题】:Setting a variable at run time在运行时设置变量
【发布时间】:2012-08-15 12:33:36
【问题描述】:

我正在制作一个 NSIS 脚本,用于检查是否安装了以前版本的应用程序。如果是这样,它会询问是否应该从这个以前的版本导入配置文件。所以我有一个全局变量配置文件,我试图在运行时根据用户选择“是”还是“否”来设置它。我遇到的问题是在编译时抱怨 File: "${XMLConfigDir}*.xml" -> no files found. 因为 XMLConfigDir 尚未设置。那么有没有在运行时设置变量呢?

【问题讨论】:

    标签: nsis


    【解决方案1】:

    声明变量(Var命令)和符号(用!define命令定义)是有区别的:

    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 命令行开关设置符号。

    【讨论】:

    • /D 开关也可以在编译期间使用:makensis.exe /DmySymbol="C:\some_path_to_XML\subdir\" script_to_compile.nsi
    • 为信息干杯,但我不明白它如何回答我的问题,即无法将 File 命令与在编译时未知但在运行时确定的变量一起使用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多