如何允许每次构建之间的MSI升级?

时间:2013-02-07 13:17:47

标签: windows-installer

我目前正在使用Wise Studio 7维护安装程序(在更改为IS 2012 Spring的过程中) 我想要实现的是允许QA在每次构建之间升级MSI包的能力。 该公司不希望更改每个版本的产品代码或版本号。 我认为这可能与PackageCode有关,但它似乎不起作用。我收到一条消息,说明目前已经安装了产品。或许怀斯工作室的dll也会妨碍我。我不太了解它的作用。我已经尝试改变它的顺序和条件,以便它不会运行,但这不会影响输出。

目前,我已将升级表设置为防止降级。 我还撰写了允许升级的文章。 如果我保持包代码相同,则安装在维护模式下运行,QA使用维护对话框卸载以前的安装。但这不是真正的升级。 我认为更改包代码应该允许小更新。但显然我的理解是不正确的。也许这仅适用于补丁文件。

有没有办法完成我们想要的东西。我们真的不想增加版本号。该公司希望安装程序版本反映应用程序的版本号而不是构建版本。我们绝对不希望在构建之间将产品代码GUID设置为不同的值。

感谢您的任何见解。

编辑:我应该提到我们有一个持续构建系统。

此致 丹

2 个答案:

答案 0 :(得分:2)

始终测试您的维修策略。

如果您计划向客户发送主要升级,那么您应该测试。

如果您计划进行小幅升级,那么您应该测试。

我建议“公司”(臭名昭着的“他们”)不应该关注ProductCodes。他们可以关注ProductVersion的Major和Minor部分,但他们不应该关注Build部分。这两件事应保留给CM / Install Engineering,否则会限制你失败。

答案 1 :(得分:1)

您排除了MSI内部所有可能的解决方案。

  • 只更改包代码会使您处于小更新的范围内。这将限制您可以进行的更改,并且很难推断在无序安装构建时会发生什么(由您的QA人员;通常您不会向全世界发布多个这些构建)。
  • 更改产品版本也会带您进行小幅升级。这更容易推理(并定义一个订单),但几乎是限制性的。但是,您必须更改前三个版本部分中的一个,并且您已经拒绝了。
  • 使用每个版本更改产品代码可以进行重大升级,这很容易理解,删除了大多数限制,并且应该自动删除以前的版本。这通常是我的建议,除非您需要支持的方案是对以前发布的版本的小幅升级。

所以要回答的问题是:你真的需要拒绝所有基于MSI的解决方案,如果是这样,你能提供其他方法吗?例如,您是否需要QA运行脚本或批处理文件,这将在启动新构建的版本之前删除旧版本?您是否可以要求QA将其虚拟机恢复到没有先前构建的状态?