WiX - 如果先前版本的配置不同,则取消升级 (Debug/Release)

WiX - Cancel upgrade if previous version is not same configuration (Debug/Release)

我在尝试在发布版本之上安装调试版本时遇到自定义操作无法正常工作(并导致安装损坏)的问题,反之亦然。所以我想完全阻止这样的升级,并强制用户先手动卸载。

到目前为止我有这个:

<?if $(var.Configuration) = Debug?>
    <?define DisallowUpgrade = "yes"?>
<?else?>
    <?define DisallowUpgrade = "no"?>
<?endif?>

<MajorUpgrade Disallow="$(var.DisallowUpgrade)" ... />

这会强制用户在安装调试版本时始终先卸载(这很好)。但是,它不会阻止发布版本尝试升级调试版本。我该怎么做?

谢谢!


P.S。当我打字时,我只是想增加调试版本的版本号——比如向它添加 100。这会起作用,但可能会导致 QA 人员混淆,所以我更喜欢更简洁的方法。

$(var.Configuration)写入注册表,使用RegistrySearch加载它,使用Condition将注册表中的内容与$(var.Configuration)的当前值进行比较。

为什么 "user" 会知道什么是调试/发布版本? IMO 用户应该只看到发布版本。

我建议构建调试 MSI 和发布 MSI 作为两个不同的产品(升级代码甚至目标目录,如果你想并排安装)和调试只能升级调试和发布只能升级发布和只向客户发布 MSI。

当然,自定义操作越少越好。 :)