NSISインストーラーのMUIの事前関数を呼び出し、NSISインストーラーでページ/ダイアログをスキップします
-
27-10-2019 - |
質問
MUIダイアログの事前機能は、必要な場合にのみ呼び出すことができますか?
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS
Function SkipComponentsPage
Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd
//このセクションはデフォルトでチェックされます。つまり、ユーザーはこのセクションを選択または選択解除できません。これを実行する必要があります..........これを行うには?その名前のサインを含めました。その名前は「必須」です
Section "-mandatory" SEC_UPDATE
#Do update............
SectionEnd
NSISインストーラーのカスタムダイアログページに2つのラジオバイトン(デモと更新)があります。ユーザーが更新をインストールすることを選択したとき(更新ラジオバットンを選択します)、コンポーネントページがスキップされ、指定されたセクションが自動チェックされて実行されます。
ただし、ユーザーがDEMをインストールすることを選択した場合(DEMO RadioButtonを選択します)、コンポーネントページはスキップされず、ユーザーはそのコンポーネントページでセクションをチェックまたはチェックすることができます。
解決
ページコールバックは常に呼び出されますが、関数内にロジックを配置できます。
...
section "" SEC_UPDATE
sectionend
Function SkipComponentsPage
!insertmacro UnSelectSection ${SEC_UPDATE} ; Don't include update with demo by default?
${If} $InstallType == UPDATE
!insertmacro SelectSection ${SEC_UPDATE}
Abort
${EndIf}
Functionend
ユーザーにデモモードで更新を選択できるようにしたい場合は、私にはあまり明確ではありませんが、更新を強制したい場合は、セクションに読み取ることができます。
section "Update" SEC_UPDATE
SectionIn RO
sectionend
(そして、事前関数から選択解除コールを削除します)
...または、お客様が提案したように、-Nameプレフィックスでセクションを見えないようにするだけです。
所属していません StackOverflow