首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从宏中设置全局变量

从宏中设置全局变量
EN

Stack Overflow用户
提问于 2012-05-03 14:20:39
回答 1查看 1.2K关注 0票数 1

在NSIS脚本语言中,当我从宏内访问全局变量时,我得到一个错误。

我的变量installDirectory真的是全局的吗?如何在宏或函数中设置变量installDirectory (如果可以在函数中设置)?

代码语言:javascript
运行
复制
var installDirectory

!macro IdentifyDir
   IfFileExists C:\test\9.00\ Version9 AbortInstall

   Version9:
      $installDirectory "C:\test\9.00\"
   AbortInstall:
      Abort
!macroend

另外,宏&/或函数是否可以在NSIS中返回值(或shd,我只使用push/pop)?

代码语言:javascript
运行
复制
!macro IdentifyDir
   IfFileExists C:\test\9.00\ Version9 AbortInstall

   Version9:
      return "C:\test\9.00\"
   AbortInstall:
      Abort
!macroend

var installDir !insertmacro IdentifyDir # is that valid?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 16:44:20

有两个问题:

对于字符串变量,您可以使用StrCpy

  • your another question about labels中声明,标签不是子,而是流控制可以到达的一些已定义的点,因此当跳到Version9标签时,如果没有另一个跳转,执行将运行到AbortInstall标签后面的Abort语句。您应该在!macroEnd语句之前放置另一个类似end_of_macro:的标签,并在AbortInstall标签之前添加一个goto (请注意,宏会在您放置!insertMacro的位置展开,因此您必须选择一个唯一的标签名称,这与节或函数的名称不同),或者(更优雅地)颠倒这两个标签:在中止的情况下,执行将在此处停止,在第二种情况下,它将在宏

之外继续执行

代码语言:javascript
运行
复制
!macro IdentifyDir 
    IfFileExists C:\temp\9.00 Version9 AbortInstall
AbortInstall:
    Abort
Version9:
    StrCpy $installDirectory "C:\test\9.00\"
!macroend

对于有关返回值的问题,可以使用默认寄存器$0$9$R0$R9

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10426143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档