如何使用 Wix 根据 CheckBox 有条件地卸载先决条件?
How do I conditionally uninstall pre-requisites based on a CheckBox using Wix?
安装我的应用程序时,它会检测先决条件并根据需要安装它们。因为我不想(通常)卸载先决条件,所以我将 'permanent' 属性设置为 'yes'。这是在 Bootstrapper 中使用以下 ExePackage 完成的。
<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 >= postgres_version ) AND ( NOT REINSTALL )"
Compressed ="yes"
Vital ="yes"
PerMachine="yes"
Permanent = "yes"
Description="Postgres installer"
/>
这工作正常,没有任何问题。我想做的是有条件地卸载先决条件。根据用户选择的复选框,还应删除先决条件 ExePackage。我曾尝试将 Permanent 更改为条件,但随后编译器抱怨它不是有效的 yes/no 类型。我知道我已经看到安装程序删除了 'all components' 选项,这会删除其他应用程序,所以我认为这一定是可能的,但我不知道这是如何完成的。
您的 BootstrapperApplication 需要处理这种情况。即,处理 IBootstrapperApplication::OnPlanPackageBegin()
回调并在卸载捆绑包期间将此包的请求状态更改为不卸载。
Burn 引擎不提供执行此操作的声明方式。
安装我的应用程序时,它会检测先决条件并根据需要安装它们。因为我不想(通常)卸载先决条件,所以我将 'permanent' 属性设置为 'yes'。这是在 Bootstrapper 中使用以下 ExePackage 完成的。
<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 >= postgres_version ) AND ( NOT REINSTALL )"
Compressed ="yes"
Vital ="yes"
PerMachine="yes"
Permanent = "yes"
Description="Postgres installer"
/>
这工作正常,没有任何问题。我想做的是有条件地卸载先决条件。根据用户选择的复选框,还应删除先决条件 ExePackage。我曾尝试将 Permanent 更改为条件,但随后编译器抱怨它不是有效的 yes/no 类型。我知道我已经看到安装程序删除了 'all components' 选项,这会删除其他应用程序,所以我认为这一定是可能的,但我不知道这是如何完成的。
您的 BootstrapperApplication 需要处理这种情况。即,处理 IBootstrapperApplication::OnPlanPackageBegin()
回调并在卸载捆绑包期间将此包的请求状态更改为不卸载。
Burn 引擎不提供执行此操作的声明方式。