我被迫在我的安装程序中使用标签,如下所示:
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声明,但我在互联网上找不到任何信息或解决方法。
答案 0 :(得分:0)
您不能在宏上使用相对跳转,因为宏可以包含多个指令。 !insertmacro
基本上会在第一个编译阶段将!macro
的内容粘贴到您的代码中。
我更喜欢使用LogicLib:
!include LogicLib.nsh
Section
${If} ${FileExists} "$InstDir\file.ext"
!insertmacro ...
${EndIf}
SectionEnd
您还可以使用标签跳过!insertmacro
。