坚持NSIS脚本

时间:2017-11-05 06:27:44

标签: nsis

我理解NSIS脚本的问题是我从一些安装程序中使用7zip解压缩得到的。我有几个问题:

  1. .onInit函数在执行任何操作之前执行吗?
  2. System::Call "* (&t256) p .r5 "来电的含义是什么?正如我从文档中所知道的那样创建了新的结构但是&t256是什么?
  3. 我知道r0-r10​​是寄存器,如果r0是指向某个字符串的指针,我可以得到r0的值吗,我需要字符串,而不是指针本身。 Messagebox MB_OK "$r0"打印指针
  4. 有像*$1(&t255 .r0)这样的电话我希望获得$ 1的价值。
  5. 谢谢

1 个答案:

答案 0 :(得分:0)

  • 是的,.onInit是执行的.NSI的第一部分。 (在调用InstallDirRegKey
  • 之前,它将在内部读取.onInit作为第一个操作
  • t是一种字符串类型,与C / C ++中的TCHAR相同。 *(&t256)p.r5是256个字符的缓冲区,足以容纳文件名。它分配内存并将地址存储在$5

  • r0是系统插件寄存器语法,它与NSIS代码中的$0相同,而不是$R0,这是一个不同的寄存器!

  • 如果$1包含内存中字符串的地址,*$1(&t255 .r0)将在$0中提取/放置字符串的前255个字符。