Wix Bootstrapper (Burn) 标签的条件显示

Wix Bootstrapper (Burn) Conditional Display of Label

我正在尝试根据 wix burn 安装程序执行的操作显示标签“安装”或“卸载”。到目前为止我试过这个:

<?define InstallStatus=[WixBundleAction]?>
    <?if $(var.InstallStatus) = 5?>
    <Variable Name="StatusLabel" Value="Install"/>
    <?else ?>
    <Variable Name="StatusLabel" Value="Uninstall"/>
    <?endif ?>

但它总是returns卸载。当我检查日志文件时,我得到 Initializing string variable 'StatusLabel' to value 'Uninstall'.

当我尝试打印 InstallStatus 时,它没有值 ("")。好像到时候还没定。

还有其他方法可以实现吗?

<?define InstallStatus=[WixBundleAction]?> 是在编译时评估的预处理器代码,但 WixBundleAction 是一个直到运行时才可用的 Burn 变量。在 v3.x 中,您必须编写代码以在运行时设置变量。在 v4 中,在 #4948 中实现了一个新的 SetVariable 元素,它允许像您尝试做的那样以声明方式设置变量。

如果您使用的是 wixstdba,那么您可能想了解 #4149 它增加了对显示安装和卸载的不同消息的支持。