If statement 如何使文件可选包括在NSIS安装程序的Main部分中

If statement 如何使文件可选包括在NSIS安装程序的Main部分中,if-statement,windows-installer,nsis,If Statement,Windows Installer,Nsis,.nsi文件的main部分包含与安装程序捆绑在一起的文件名 我需要制作一个文件,当安装类型等于normal时,该文件不应被捆绑,而当类型等于costude时,该文件应被捆绑 章节“主要章节”SEC01 -设置输出路径“$INSTDIR” -SetOverwrite ifnewer *如果(installtype==自定义) *文件“包含此文件” 分段结束 如何在nsis中实现上述目标。非常感谢您的帮助 您通常只需将可选内容放在另一个部分,但也可以做您想做的事情: !include Logic

.nsi文件的main部分包含与安装程序捆绑在一起的文件名

我需要制作一个文件,当安装类型等于normal时,该文件不应被捆绑,而当类型等于costude时,该文件应被捆绑


章节“主要章节”SEC01
-设置输出路径“$INSTDIR”
-SetOverwrite ifnewer
*如果(installtype==自定义)
*文件“包含此文件”
分段结束


如何在nsis中实现上述目标。非常感谢您的帮助

您通常只需将可选内容放在另一个部分,但也可以做您想做的事情:

!include LogicLib.nsh
!include FileFunc.nsh
var IsSpecialMode

Function .onInit
StrCpy $IsSpecialMode 0 
${GetParameters} $0
ClearErrors
${GetOptions} $0 "/includespecial" $1
${IfNotThen} ${Errors} ${|} StrCpy $IsSpecialMode 1 ${|}
FunctionEnd

Page InstFiles

Section
SetOutPath "$instdir"
${If} $IsSpecialMode <> 0
    File "${__FILE__}"
${EndIf}
SectionEnd
!包括LogicLib.nsh
!包括FileFunc.nsh
特殊模式
函数。onInit
StrCpy$IsSpecialMode 0
${GetParameters}$0
明显错误
${GetOptions}$0”/includespecial“$1
${IfNotThen}${Errors}${|}StrCpy$IsSpecialMode 1${|}
功能端
页面文件
部分
设置输出路径“$instdir”
${If}$IsSpecialMode 0
文件“${uuuuuuuuuuuuuu文件}”
${EndIf}
分段结束

…然后运行
MySetup.exe/includespecial

再次感谢Anders的回答。我已经做了同样的事情,我的问题不是要获取/设置命令行变量,如果我将If语句放在主节中,而不管${If}值为true或false,则文件将被捆绑(即build希望可选文件在编译时也存在)。我想知道如何使几行代码成为可选的(包括文件)在MainSection中。正如我所观察到的,MainSection中的If条件对includin或excluding File没有影响您可以使用File/nonfatal来包含可能不存在或不使用的文件!如果对于编译时逻辑…我使用了/nonfatal,prob甚至在specialmode中为true,并且文件不存在它只是发出警告而不是错误,所以想知道是否有人知道更好的解决方案来处理这种情况