Как условно удалить предварительные реквизиты на основе CheckBox с помощью Wix? - PullRequest
0 голосов
/ 08 мая 2019

При установке моего приложения оно обнаружит предварительные требования и установит их по мере необходимости.Поскольку я не хочу, чтобы предварительные требования были удалены (обычно), у меня для атрибута «перманент» установлено значение «да».Это делается с помощью следующего ExePackage в Bootstrapper.

<ExePackage
    SourceFile ="@@EA_PROJECT_NAME@Installer_SOURCE_DIR@/inst_binaries/postgresql-10.7-1-windows-x64.exe"
    InstallCommand=' --unattendedmodeui minimal --mode unattended --prefix "[ProgramFiles64Folder]\@MANUFACTURER@\postgres" --datadir "[ProgramFiles64Folder]\@MANUFACTURER@\data" --disable-components stackbuilder'
    UninstallCommand=' --unattendedmodeui minimal --mode unattended'
    DetectCondition="( POSTGRESINSTALLED_x64 &gt;= postgres_version ) AND ( NOT REINSTALL )"
    Compressed ="yes"
    Vital ="yes"
    PerMachine="yes"
    Permanent = "yes" 
    Description="Postgres installer"
/>

Работает нормально, без проблем.Что я хочу сделать, это условно удалить предварительное условие.Исходя из того, что пользователь установил флажок, предварительный пакет ExePackage также должен быть удален.Я попытался изменить постоянный на условие, но затем компилятор жалуется, что это не правильный тип да / нет.Я знаю, что видел, как установщики удаляли опции «все компоненты», что удаляет другие приложения, поэтому я предполагаю, что это должно быть возможно, но я не знаю, как это сделать.

1 Ответ

2 голосов
/ 08 мая 2019

Ваше BootstrapperApplication должно будет обработать этот сценарий.А именно, обработайте обратный вызов IBootstrapperApplication::OnPlanPackageBegin() и измените запрошенное состояние для этого пакета во время удаления пакета, чтобы не удалять его.

Механизм записи не предоставляет декларативный способ выполнить эту операцию.

...