Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio WiX-如果以前的版本不是相同的配置(调试/发布),则取消升级_Visual Studio_Wix_Windows Installer - Fatal编程技术网

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

Visual studio WiX-如果以前的版本不是相同的配置(调试/发布),则取消升级,visual-studio,wix,windows-installer,Visual Studio,Wix,Windows Installer,在尝试在发布版本之上安装调试版本时,我遇到了一些自定义操作无法正常工作(并导致安装中断)的问题,反之亦然。因此,我希望完全阻止此类升级,并强制用户首先手动卸载 到目前为止,我有: <?if $(var.Configuration) = Debug?> <?define DisallowUpgrade = "yes"?> <?else?> <?define DisallowUpgrade = "no"?> <?endif?>

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

到目前为止,我有:

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

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

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

谢谢


另外,当我输入时,我只是想增加调试版本的版本号——比如说增加100。这会起作用,但可能会导致与QA人员的混淆,因此我更喜欢一种更干净的方式。

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

的当前值进行比较。为什么“用户”会知道调试/发布版本是什么?在我看来,用户应该只看到发布版本

我建议将debug-MSI和release-MSI构建为两种不同的产品(升级代码,如果您希望并排安装,甚至目标目录),并且debug只能升级debug,release只能升级release,release-MSI永远不会向客户敞开大门

当然,自定义操作越少越好。:)为什么“用户”会知道调试/发布版本是什么?在我看来,用户应该只看到发布版本

我建议将debug-MSI和release-MSI构建为两种不同的产品(升级代码,如果您希望并排安装,甚至目标目录),并且debug只能升级debug,release只能升级release,release-MSI永远不会向客户敞开大门


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

我们的调试构建包括一系列用于内部测试的额外功能;他们不会去找顾客。我们还必须广泛地重写我们的产品,以支持并行安装。把它们作为两个独立的产品就可以了;在确保一次只能安装一个的情况下,是否可以这样做?是的。每个产品都可以使用另一个产品的UpgardeCode的detect only属性拥有一个升级条目。然后是一个启动条件,如果检测到相反的程序,它将阻止安装;他们不会去找顾客。我们还必须广泛地重写我们的产品,以支持并行安装。把它们作为两个独立的产品就可以了;在确保一次只能安装一个的情况下,是否可以这样做?是的。每个产品都可以使用另一个产品的UpgardeCode的detect only属性拥有一个升级条目。然后是一种启动条件,如果检测到相反的程序,则会阻止安装。