MSI包属性表条目以启用更新版本

时间:2012-02-07 14:54:02

标签: installer installation windows-installer orca

我使用一个名为MSICREATE的程序为一个软件生成msi包。然后我使用orca来转换msi包。一切正常,但用户必须在安装更新之前删除现有产品。我想修改msi包,以便安装程序识别出正在安装的更新版本或不同版本,并删除当前版本,然后安装新的msi软件包。

需要哪些属性表条目?

======

下面给出的答案帮助我摆脱了原来的问题,感谢Ciprian的帮助。我的主要升级msi现在删除现有产品但未完全重新安装产品。我的产品包含一些文本文件,帮助文件和.exe文件。不会重新安装.exe文件。

无论它值多少,我在下面添加了答案,总结了我使用orce添加到我的msi中的内容。

2 个答案:

答案 0 :(得分:2)

我不知道MSICREATE如何处理升级方案。但是,您可以使用ORCA实现此目的。 Here是MSDN的详细升级示例。

长话短说,您的软件包必须共享UpgradeCode。您还必须在第二个包的Upgrade table中创建一个条目。

答案 1 :(得分:0)

以下是我使用orca添加到我的msi以实现重大升级的内容。正如我上面所说的,我仍然有一个问题,即我的.exe文件没有在重大升级时重新安装。如果进行修复,则会添加.exe。

InstallExecuteSequence表

  • 添加了序列400的FindRelatedProducts
  • 添加序列为1450的RemoveExistingProducts

InstallUISequence表

  • 添加序列为200的FindRelatedProducts

PropertyTable

  • 添加了RemovePreviousVersions TRUE
  • 添加了SECURECUSTOMPROPERTIES SOLARUPGRADE
  • 有一个现有的UpgradeCode,其中包含由MSICREATE创建的guid
  • 现有的ProductVersion 12.2.12.0创建了我的MSICREATE

添加了升级表

  • UpgradeCode与属性表中的升级相同的值
  • VersionMin null
  • VersionMax 99.12.31
  • 属性1
  • ActionProperty SOLARUPGRADE(与SECURECUSTOMPROPERTIES中的值相同) 物业表)

我还分配了一个新的PackageCode和一个新的ProductCode,因此新的msi具有与以前安装的产品不同的PackageCode,ProductCode和ProductVersion值。