我有一个主安装程序包,可以调用其他 WiX 安装程序。但是在卸载时,我希望卸载操作能够卸载所有子包。
我正在使用带有捆绑包的引导程序。我使用的格式如下:
所有其他安装程序也都设置了此约定。但是,在卸载过程中,仅删除顶级应用程序,而不删除其他应用程序。我该如何卸载链接的项目?
<ExePackage
SourceFile="..\dir1\dir2\bin\Release\Master Bundle.exe"
InstallCommand="/quiet" UninstallCommand="/uninstall /quiet" >
</ExePackage>
您需要添加一个
DetectCondition
属性。这将使 Burn 知道该软件包已安装并且应该卸载。 来自文档:
DetectCondition(字符串):确定包是否存在于目标系统上的条件。此条件可以使用内置变量和搜索返回的变量。此条件是必要的,因为 Windows 不提供检测 ExePackage 是否存在的方法。 Burn 使用此条件来确定在捆绑操作期间如何处理此包;例如,如果此条件为 false 或省略并且正在安装捆绑包,Burn 将安装此软件包。
在 WiX v4+ 中,如果您的 exe 是 Burn 捆绑包,则可以使用 BundlePackage 元素。该元素会自动处理检测条件。