WiX - 如果先前版本的配置不同,则取消升级(调试/发布)

时间:2016-03-25 00:56:41

标签: visual-studio wix windows-installer

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

到目前为止,我有这个:

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

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

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

谢谢!

P.S。在我打字的时候,我只是想增加Debug版本的版本号 - 比如增加100。这可行,但可能导致与QA人员的混淆,所以我更喜欢更清洁的方式。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

#include <sstream> std::ifstream file( fileName ); if ( file ) { //Check open correctly std::stringstream ss; ss << file.getline(); int a, b, c; ss >> a >> b >> c; } 写入注册表,使用class A{ @Embedded private B objB; } @Embeddable class B{ Integer x; Integer y; float z; } 加载它,并使用$(var.Configuration)将注册表中的内容与RegistrySearch的当前值进行比较。