【问题标题】:How can I use variable on NSIS include / to get another variable如何在 NSIS 上使用变量包含 / 来获取另一个变量
【发布时间】:2013-08-18 17:29:46
【问题描述】:

是否有通过变量提及文件来包含文件?我是说

StrCpy $1 "bla.nsh"
!include $1

?

或者可能获取由另一个变量调用的变量的值,例如:

StrCpy $1 "EN"
StrCpy $2 ${LANG_${1}_WELCOME_MESSAGE}

?

谢谢。

【问题讨论】:

    标签: nsis


    【解决方案1】:

    变量只能在运行时使用(在最终用户机器上运行),您需要使用定义:

    !define foo "bar"
    !include "${foo}.nsh"
    

    编辑:

    如果您想添加自定义翻译字符串,您应该使用LangString 指令,您可以在运行时使用$(mystringid) 访问语言字符串。

    【讨论】:

    • 知道了,但是我的第二个问题呢?如何使用变量中的变量调用变量值(我给出的第二个代码)
    • StrCpy $2 "foo $1 bar"
    • 你没有得到我。我的意思是,如果 $1 包含 ex。 “EN”,我已经定义了 LANG_EN_WELCOME 我如何用 $1 获得定义?我的意思是像 ${LANG_${1}_WELCOME} 但它对我不起作用。
    • 你必须对 EN 使用定义,我已经告诉过你,变量不能在编译时使用。语法:$thisIsAVar ${thisIsADefine} ${thisIs${DefineInside}ADefine}
    • 好的,也许你能帮帮我,我想用用户系统语言翻译几句话..我该怎么做?
    【解决方案2】:

    实际上,安德斯是对的。想想看,当编译器编译你的代码时,它需要知道它需要在你的 EXE 文件中包含哪些文件。

    关于变量,您只能与定义一起使用。再次,因为在编译时,编译器将编译所有需要的(正在使用的)变量/定义,并且您不能告诉他使用从未声明过的变量。它与服务器端语言几乎没有什么不同,因为您正在编译并将您的代码打包到您的计算机中组装的 EXE 文件中。

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 1970-01-01
      • 2021-05-19
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 2022-01-17
      • 2013-02-07
      相关资源
      最近更新 更多