当我在寻找如何查看Windows操作系统是32位还是64位的答案时,我偶然发现了另一个答案:Use NSIS to install 32bit...并使用了以下代码。
!include x64.nsh
Function .onInit
#Determine the bitness of the OS and enable the correct section
${If} ${RunningX64}
SectionSetFlags ${SEC0000} ${SECTION_OFF}
SectionSetFlags ${SEC0001} ${SF_SELECTED}
${Else}
SectionSetFlags ${SEC0001} ${SECTION_OFF}
SectionSetFlags ${SEC0000} ${SF_SELECTED}
${EndIf}
FunctionEnd
但是,我遇到了这个错误:
!insertmacro: If
!insertmacro: macro named "_LOGICLIB_TEMP" not found!
Error in macro _RunningX64 on macroline 1
Error in macro If on macroline 5
我不确定那是什么。我认为它可能与LogicLib.nsh有关,但我使用完全相同的if,else语句,在同一个脚本中没有问题。所以,它让我相信它的x64.nsh库阻止了我。
答案 0 :(得分:0)
我之前从未见过这个错误。除非您在包含x64.nsh和/或LogicLib.nsh之前在代码中的某处定义了LOGICLIB,否则您当前的代码应该可以正常工作。
尝试将它放在.nsi的顶部:
!ifdef LOGICLIB
!warning "LOGICLIB should not be defined here"
!undef LOGICLIB
!endif
!include LogicLib.nsh
!ifmacrondef _LOGICLIB_TEMP
!error "Corrupted LogicLib.nsh?"
!endif
!include x64.nsh