msi重新安装windows7问题

时间:2011-06-16 10:34:39

标签: windows-installer reinstall

我有2个版本的产品“product1”(1.2.2.2和1.2.2.3)。

对于升级/降级,product1使用“重新安装=所有重新安装模式= vamus”MSI参数,因此始终新文件将位于安装目录中。

如果我从1.2.2.2升级到1.2.2.3,并非所有新文件都应对安装目录。 我只在Windows 7(x86和x64)上面临这个问题。没有问题XP(x86和x64)。

我比较了xp和win7上的日志。我发现了以下不同之处。

XP: SetSourceFolder(Folder = 1 \ PROGRA~1 \ company~1 \ product~1 \ drivers \ | program files \ companyname \ productname \ drivers)

win7的: 执行op:SetSourceFolder(Folder = C:\ Windows \ Installer \ $ PatchCache $ \ Managed \ A7C0B53D545489A48A0183013BEF525E \ 1.2.2)

这是我的设置。我们的产品支持升级和降级。为了使客户端尽可能简单,我们选择“REINSTALL = All REINSTALLMODE = vamus”,以便这些选项支持升级和降级。另一个重要的一点是,这个MSI没有单独的升级或降级信息。 MSI有平面组件。 MSI内的所有组件都已签名。版本信息也嵌入了。 我的问题是 1)在win7上是否更改了Windows安装程序的行为? 2)安装程序是否仅将a.b.c作为版本信息?那会之后会忽略吗?

另一个重点是,此MSI没有单独的升级或降级信息。 MSI有平面组件。 “REINSTALL =所有REINSTALLMODE = vamus”参数确保始终运行msi版本组件进入安装目录。到目前为止,这种方法已有近5年的历史。只有win7有问题。

要重现此问题...... 1)由msiexec / i 1.2.2.2.msi安装1.2.2.2 2)降级到1.2.2.1没有问题msiexec / i 1.2.2.1.msi REINSTALL = ALL REINSTALLMODE = vamus 3)升级到1.2.2.2导致问题msiexec / i 1.2.2.2.msi REINSTALL = ALL REINSTALLMODE = vamus 4)重试再次升级到1.2.2.2。这一次没有问题。

另一个观察结果是,MSI中的一个组件说“comp1”有2个文件说file1,file2。 File1是组件comp1的关键路径。 在问题出现时(步骤3),file1没有得到更新。但是file2正在正确更新。

另一个观察。我在不同的版本上运行了以上测试。

- > 1.2.1.1和1.2.2.1之间的升级/降级按预期工作 - > 1.2.1.1和1.2.1.2之间的升级/降级无法按预期工作 - > 1.2.2.1和1.2.2.2之间的升级/降级无法按预期工作

如上所述,windows安装程序正在考虑将版本升级到a.b.c. a.b.c.x和a.b.c.y之间的升级/降级导致windows-7

出现问题

3 个答案:

答案 0 :(得分:1)

只有3位数字部分是有价值的, 所以MSI在1.2.2.2和1.2.2.3之间没有区别

答案 1 :(得分:0)

File table中是否正确列出了所有文件的版本和日期信息?版本号是否增加,日期在升级包中稍后会出现?

File versioning对Windows Installer功能至关重要;默认情况下,没有版本信息的文件被视为“用户数据”,在重新安装或升级过程中不应覆盖该文件。因此,升级是最简单的 - 并且不需要特殊的命令行选项 - 如果它们正在替换具有更高版本号或更新日期的文件。

答案 2 :(得分:-1)

正确的参数是:

REINSTALL="ALL" REINSTALLMODE="vamus"

属性区分大小写,其值必须用引号括起来。