我们希望使用流行的major.minor.update.build_number
版本控制方案。我们的下一个产品更新将是1.0.1版。
我们的内部配置管理机制可生成发布版本和每日版本,所有这些都会自动打包为MSI。开发人员和QA会定期下载构建版本并使用它们更新测试平台,以验证错误修复等。
每个CM构建都会增加build_number
字段,因此构建版本可能看起来像这样
1.0.1.001 // Release build
1.0.1.002 // Daily build
1.0.1.003 // Another Daily build
1.0.1.004 // New Release build
我们的问题是,由于我们的 ProductVersion 没有改变,微软的安装程序技术将不允许我们在我们的测试台上运行那些MSI作为更新。我们必须完全卸载现有产品并重新安装所需的MSI。
有没有办法让我们的MSI应用更新而不管ProductVersion标记?
我们使用InstallShield。是否有替代安装技术可以让我们做我们想做的事情?
谢谢!
答案 0 :(得分:1)
在这种情况下,您应该可以进行小幅升级。如果您的目标是进行重大升级,则应该更改ProductVersion属性的前三个字段之一。
如果你的目标是向上游游泳,那么你需要在FindRelatedProducts和RemoveExistingProducts之间插入一个自定义动作来覆盖MSI的内置产品检测逻辑。基本上,您需要使用Msi API来查找UpgradeCode的已安装ProductCodes。
我个人推荐
Major.Minor.Build.Patch所以我增加的构建序列是
1.0.1.0 1.0.2.0 1.0.3.0 1.0.4.0 1.1.5.0 1.1.6.0 1.1.7.0
.0允许我灵活地重建程序集并在需要时将它们作为补丁发送。