我用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." />
答案 0 :(得分:2)
<Product Id="*" Name="..." Version="" Manufacturer="..." UpgradeCode="...">
自动GUID :
Id="*"
部分表示“自动生成产品代码”(使用*
表示自动生成)。当你这样做 安装程序的每次构建或重建都会获得新的产品代码。这个 如果您还更改了ProductVersion
(前三位数字之一),并且您有一个MajorUpgrade element
,例如您在来源中使用的数字(即顺便说一句)。解决方案 :如果您希望能够控制产品更改的时间,则可以对产品代码进行硬编码。
注意 :在安装了许多“重叠”软件的系统上,您可能处在肮脏的状态。通过打开“添加/删除程序”小程序查找产品的重复安装: WinKey +点击 R =>
appwiz.cpl
=> 输入。我将卸载所有实例,并且也许以后更愿意在虚拟机上测试设置? (这也有助于发现隐藏的运行时依赖关系-只要在不使用大多数运行时的情况下保存虚拟机即可)。
链接 :某些链接包含有关重大升级的一些背景信息。
MSI SDK :
Flexera / Installshield :