0
在NSI中,我怎樣才能使一個部分依賴於另一個?如何使一個nsi部分依賴於另一個?
我們的安裝有四個可見部分(組件):
* Client
* Database
* Server
* Interface
所有組件依賴於客戶端,所以它是強制性的。另外,服務器依賴於數據庫,如果數據庫不存在,將無法安裝。
在NSI中,我怎樣才能使一個部分依賴於另一個?如何使一個nsi部分依賴於另一個?
我們的安裝有四個可見部分(組件):
* Client
* Database
* Server
* Interface
所有組件依賴於客戶端,所以它是強制性的。另外,服務器依賴於數據庫,如果數據庫不存在,將無法安裝。
您可以使用.onSelChange回調更改段狀態以響應段更改。
Outfile test.exe
!include Sections.nsh
!include LogicLib.nsh
Page Components
Page InstFiles
Section "Client"
SectionIn RO
SectionEnd
Section /o "Database" SEC_DB
SectionEnd
Section /o "Server" SEC_SRV
SectionEnd
Section /o "Interface"
SectionEnd
Function .onSelChange
${If} ${SectionIsSelected} ${SEC_SRV}
!insertmacro SetSectionFlag ${SEC_DB} ${SF_RO}
!insertmacro SelectSection ${SEC_DB}
${Else}
!insertmacro ClearSectionFlag ${SEC_DB} ${SF_RO}
${EndIf}
FunctionEnd
或者不只讀DB部分:
Function .onSelChange
var /Global HadSecSrv
${IfNot} ${SectionIsSelected} ${SEC_DB}
${If} $HadSecSrv <> 0
!insertmacro UnselectSection ${SEC_SRV}
${EndIf}
${EndIf}
StrCpy $HadSecSrv 0
${If} ${SectionIsSelected} ${SEC_SRV}
StrCpy $HadSecSrv 1
!insertmacro SelectSection ${SEC_DB}
${EndIf}
FunctionEnd
有一個問題:在.onSelChange方法需要下面的所有部分它修改。 – Joshua 2010-11-01 17:11:30
是的,這是因爲部分ID只在部分指令之後定義。 – Anders 2010-11-02 01:48:29