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
WIX安装程序可以';t从以前安装的Windows installer软件升级_Wix_Windows Installer_Upgrade - Fatal编程技术网

WIX安装程序可以';t从以前安装的Windows installer软件升级

WIX安装程序可以';t从以前安装的Windows installer软件升级,wix,windows-installer,upgrade,Wix,Windows Installer,Upgrade,我正在为我们的软件创建一个WIX安装程序,现在从以前的Windows installer软件包升级时遇到了一些问题 在出现问题之前,从一个WIX打包软件升级到另一个WIX打包软件实际上工作正常,我可以卸载旧版本并安装新版本。当旧版本是Windows Installer打包(这是我们当前的解决方案)而新版本是WIX打包时,真正的问题就会发生。基本上,我的WIX安装程序无法发现已经安装了旧版本,因此将在不卸载旧版本的情况下安装新版本 如何在WIX安装程序和Windows安装程序之间建立连接:我将WI

我正在为我们的软件创建一个WIX安装程序,现在从以前的Windows installer软件包升级时遇到了一些问题

在出现问题之前,从一个WIX打包软件升级到另一个WIX打包软件实际上工作正常,我可以卸载旧版本并安装新版本。当旧版本是Windows Installer打包(这是我们当前的解决方案)而新版本是WIX打包时,真正的问题就会发生。基本上,我的WIX安装程序无法发现已经安装了旧版本,因此将在不卸载旧版本的情况下安装新版本

如何在WIX安装程序和Windows安装程序之间建立连接:我将WIX的升级代码设置为与Windows安装程序相同。我还在线查看了一些示例,他们建议我当前的解决方案应该有效。以下是升级部分的my.wxs文件的一部分:

<Upgrade Id="$(var.UpgradeCode)">

  <UpgradeVersion OnlyDetect="yes" Minimum="$(var.VersionNumber)" Property="NEWPRODUCTFOUND" IncludeMinimum="no" />
  <UpgradeVersion OnlyDetect="no" Maximum="$(var.VersionNumber)" Property="UPGRADEFOUND" IncludeMaximum="no" />           
</Upgrade>

<CustomAction Id="PreventDowngrading" Error="A software with newer version number is found on this machine" />        

<InstallUISequence>
  <Custom Action="PreventDowngrading"
          After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
</InstallUISequence>    

<InstallExecuteSequence>
  <Custom Action="PreventDowngrading"
      After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
  <RemoveExistingProducts After="InstallFinalize" />   
</InstallExecuteSequence>

新产品发现
新产品发现

值得一提的是,我们的软件实际上是一个Windows服务,我不确定这是否重要。谢谢你的帮助

拥有相同的升级代码是不够的。您还必须检查这两个软件包是否具有相同的安装类型,即它们都是按用户或每台计算机安装的。如果安装类型不同,Windows Installer将跳过删除旧版本

谢谢你的回复。虽然我没有将Wix安装程序的安装范围设置为perMachine,这与旧的Windows安装程序相同。无论如何,原来旧的Windows安装程序是32位软件,而新的Wix安装程序是64位软件。当我用32位构建WIX安装程序并尝试安装时,它确实成功地卸载了旧版本并安装了。大多数人创建32位软件包时,我错过了这一点。另外,正如您可能知道的,64位软件包不能安装在32位机器上。有可能强制它不这样做吗?我有一个旧的安装程序,它为用户提供了执行这两种操作的选项——但在每个用户模式下,仍然安装在
程序文件中。他们试图安装在彼此的顶部,这真是一团糟。你想跳过升级吗?如果是,则可以在为安装程序生成新的升级代码时执行此操作,这样就不会将旧版本视为要删除的旧版本。此外,即使您已设置了“按用户安装”类型,也需要将默认安装位置更改为“按用户安装”,Windows Installer不会自动更改它。