1

MUI ダイアログの PRE 関数は、必要な場合にのみ呼び出すことができますか?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

Function SkipComponentsPage
 Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd

//このセクションはデフォルトでチェックされます。つまり、ユーザーはこのセクションを選択または選択解除できません。これを実行する必要があります........これを行う方法は?非表示にするには、iその名前に - 記号が含まれています。その名は「必須」

Section "-mandatory" SEC_UPDATE
    #Do update............
SectionEnd

NSIS インストーラーのカスタム ダイアログ ページに 2 つの RadioButton (デモと更新) があります。ユーザーが UPDATE のインストールを選択したとき (UPDATE RadioButton を選択したとき)、コンポーネント ページがスキップされ、指定されたセクションが自動チェックされて実行されるようにします。

ただし、ユーザーが DEM のインストールを選択した場合 (DEMO RadioButton を選択した場合)、コンポーネント ページはスキップされず、ユーザーはそのコンポーネント ページのセクションをチェックまたはチェック解除できます。

4

1 に答える 1

1

ページ コールバックは常に呼び出されますが、関数内にロジックを配置できます。

...
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

(そして、事前関数から UnSelectSection 呼び出しを削除します)

...または、提案したように -name 接頭辞を付けてセクションを非表示にします。

于 2011-04-29T10:02:23.773 に答える