NSIS - 使用!insertmacro的组合使用偏移量

时间:2018-04-24 10:15:03

标签: nsis

我被迫在我的安装程序中使用标签,如下所示:

  IfFileExists "$INSTDIR\XX\*.*" XX_Found 0
      !insertmacro UnselectSection ${Section_XX}
  XX_Found:

  IfFileExists "$INSTDIR\YY\*.*" YY_Found 0
      !insertmacro UnselectSection ${Section_YY}
  YY_Found:

因为这些不起作用:

  IfFileExists "$INSTDIR\XX\*.*" +2 0
      !insertmacro UnselectSection ${Section_XX}

  IfFileExists "$INSTDIR\YY\*.*" +2 0
      !insertmacro UnselectSection ${Section_YY}

任何建议为何?我认为这是因为!insertmacro声明,但我在互联网上找不到任何信息或解决方法。

1 个答案:

答案 0 :(得分:0)

您不能在宏上使用相对跳转,因为宏可以包含多个指令。 !insertmacro基本上会在第一个编译阶段将!macro的内容粘贴到您的代码中。

我更喜欢使用LogicLib:

!include LogicLib.nsh
Section
${If} ${FileExists} "$InstDir\file.ext"
  !insertmacro ...
${EndIf}
SectionEnd

您还可以使用标签跳过!insertmacro