Installation NSIS—读取并执行setup.ini文件中提到的部分

Installation NSIS—读取并执行setup.ini文件中提到的部分,installation,nsis,Installation,Nsis,我是新来使用NSIS,创建安装程序的。 我需要下面的帮助 setup.ini的结构: ; 章节标题 [设置] sec0=我的第一部分 sec1=我的第二部分 sec2=我的第三部分 Nsis脚本结构 ;小节 “sec0”部分 ; ... 分段结束 第1节 ; ... 分段结束 第2节 ; ... 分段结束 在这里,我看到,如果我没有在setup.ini文件中包含“sec1=my second section”,那么安装程序应该跳过这个,而不安装。意味着安装程序应该先阅读setup.ini

我是新来使用NSIS,创建安装程序的。 我需要下面的帮助

setup.ini的结构:

; 章节标题
[设置]
sec0=我的第一部分
sec1=我的第二部分
sec2=我的第三部分

Nsis脚本结构

;小节
“sec0”部分
; ...
分段结束
第1节
; ...
分段结束
第2节
; ...
分段结束
在这里,我看到,如果我没有在setup.ini文件中包含“sec1=my second section”,那么安装程序应该跳过这个,而不安装。意味着安装程序应该先阅读setup.ini,然后只安装其中提到的部分。 请让我知道,我如何做到这一点

!include Sections.nsh
!include LogicLib.nsh

Section 'sec0'
SectionEnd

Section 'sec1' SID_1
SectionEnd

Section 'sec2'
SectionEnd

!macro SetSectionFromAnswer inient sid
ReadIniStr $0 "$exedir\Setup.ini" "setup" "${inient}"
${If} $0 == "" 
 !insertmacro UnselectSection ${sid} 
${EndIf} 
!macroend

Function .onInit
!insertmacro SetSectionFromAnswer "sid1"  ${SID_1}
FunctionEnd

当使用这样的应答文件时,我建议您不要检查条目是否不存在,而是检查它是否为
!=“0”
。这样,即使.ini不存在,安装程序也能正常运行。

嗨,安德斯,我在我的脚本中尝试了这一点。。但这是一个错误。“Function.onInit”已经存在。因为我已经定义了“.onInit”。如何使用多个.onInit函数??还有这个sid_1,${sid},${sid_1}在做什么。我的要求是,如果我没有在Setup.ini文件中定义节名,安装程序应该跳过该节而不进行安装。只能有一个init函数,但您可以将我的行添加到现有函数中。“sid1”是要在ini文件中查找的名称,SID_1是NSIS数字段ID。