Wix Installer应用程序运行两次后将无法安装并卸载该应用程序

时间:2019-11-12 13:31:16

标签: c# wix wix3.5 wix3 wix3.7

我用gui写了一个简单的wix安装程序,可以很好地安装。但是,当我第二次运行相同的.msi文件时,它将带我完成gui中的正常安装过程,但最后会卸载我的应用程序。 然后,如果我第三次运行相同的.msi文件,则安装程序仍会正常执行安装gui,但最终会执行“卸载”。

我不明白为什么它的行为不像其他安装程序那样,并且可以正常处理安装和卸载。

这是我的产品xml的一部分

 <Product Id="*" Language="1033" Codepage="1252" Name="..." 
       Version="$(var.ProductVersion)" Manufacturer="..." UpgradeCode="BDF9E310-5897-48D4-AB08-889D405F9X56">

<Package InstallerVersion="300" Platform="x64" Compressed="yes" InstallScope="perMachine" Manufacturer="..." 
         Comments="..." Description="..." Keywords="..."/>

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

1 个答案:

答案 0 :(得分:2)

<Product Id="*" Name="..."  Version="" Manufacturer="..." UpgradeCode="...">
  

自动GUID Id="*" 部分表示“自动生成产品代码”(使用 * 表示自动生成)。当你这样做   安装程序的每次构建或重建都会获得新的产品代码。这个   如果您还更改了    ProductVersion (前三位数字之一),并且您有一个 MajorUpgrade element ,例如您在来源中使用的数字(即顺便说一句)。

     

解决方案 :如果您希望能够控制产品更改的时间,则可以对产品代码进行硬编码。


  

注意 :在安装了许多“重叠”软件的系统上,您可能处在肮脏的状态。通过打开“添加/删除程序”小程序查找产品的重复安装: WinKey +点击 R => appwiz.cpl => 输入。我将卸载所有实例,并且也许以后更愿意在虚拟机上测试设置? (这也有助于发现隐藏的运行时依赖关系-只要在不使用大多数运行时的情况下保存虚拟机即可)。


链接 :某些链接包含有关重大升级的一些背景信息。

MSI SDK

Flexera / Installshield