这是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”屏幕,它大部分是空白的,只有一个“后退”和“取消”按钮。
我是朝着正确的方向前进,还是应该尝试其他方法,例如在安装过程中删除安装?
答案 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的设计目的。