如何使Windows安装程序(WiX)始终认为它正在运行升级或新安装?

时间:2015-05-19 22:26:41

标签: wix

这是SQL数据库的安装程序。它确实不会更改本地计算机上的任何内容,但会连接到数据库以进行更改。

用户可以从一台计算机升级3个不同的数据库服务器,这样他们就可以使用相同的对话框运行3次。

我希望安装程序始终显示我设置的相同自定义对话框。我不希望它进入维护对话框。

我已将MajorUpgrade标记设置为如此,文档中说明了“AllowSameVersionUpgrades”

 <MajorUpgrade AllowDowngrades="yes" />

我尝试更改对话框“下一步”按钮。 NewDBDlg是一个自定义屏幕。

 <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="NewDBDlg">1</Publish>
 <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="NewDBDlg">1</Publish> 

这种作品有效,但它到达最后一个“VerifyReadyDlg”屏幕,它大部分是空白的,只有一个“后退”和“取消”按钮。

我是朝着正确的方向前进,还是应该尝试其他方法,例如在安装过程中删除安装?

2 个答案:

答案 0 :(得分:7)

有时我需要创建一个并非真正传统安装程序的.MSI。它更像是一个实用程序,然后是已安装的应用程序。 Microsoft有时会使用Microsoft Fix it series of utilities来执行此操作。

这是一种不常见的情况,但可以通过禁止某些Windows Installer标准操作来完成:

<InstallExecuteSequence>
  <RegisterProduct Suppress="yes" />
  <PublishFeatures Suppress="yes" />
  <PublishProduct Suppress="yes" />
</InstallExecuteSequence>

由于产品从未在安装程序服务中注册,因此无需维修,卸载,升级,维护等。

答案 1 :(得分:1)

它进入维护模式的原因是每次都有相同的ProductCode,因此更改每个构建的ProductCode都可以。但是,您正在使用已安装的产品填充系统。所以......

如果您愿意使用MajorUpgrade元素并为MSI的每个版本增加ProductVersion(并更改ProductCode),那么应该进行重大升级。每次安装都将是一个完整的全新安装,但如果旧产品恰好在那里,那么它将卸载它。那么你只有一个程序和功能的antry。否则克里斯的解决方案是好的。

这看起来并不像Windows Installer的设计目的。