如何在InstallShield中更新时获取以前安装的ProductVersion

如何在InstallShield中更新时获取以前安装的ProductVersion,installshield,Installshield,我在InstallShield中有BasicMsi项目。我希望能够更新此应用程序,但是我找不到返回已安装ProductVersion数量的InstallShield变量,我知道我可以通过使用升级节点和定义一组规则手动计算此版本,但是现在我正在搜索最简单的解决方案。我想在代码中使用这个版本号,以便提供一些基于这个值的工具 我希望能够升级到当前版本,不仅可以从以前的版本(例如3.0.2)升级到当前版本,还可以从早期版本(2.1.0、1.0.0等)升级到当前版本。如果我们讨论的是主要升级,则升级表中定

我在InstallShield中有BasicMsi项目。我希望能够更新此应用程序,但是我找不到返回已安装ProductVersion数量的InstallShield变量,我知道我可以通过使用升级节点和定义一组规则手动计算此版本,但是现在我正在搜索最简单的解决方案。我想在代码中使用这个版本号,以便提供一些基于这个值的工具


我希望能够升级到当前版本,不仅可以从以前的版本(例如3.0.2)升级到当前版本,还可以从早期版本(2.1.0、1.0.0等)升级到当前版本。

如果我们讨论的是主要升级,则升级表中定义的ActionProperty将在FindRelatedProducts执行后具有ProductCode。还有由RemoveExistingProducts设置的UPGRADINGPRODUCTCODE

我知道没有其他内置机制来解析正在升级的产品的ProductVersion。您必须编写一个自定义操作,根据ProductCode/UpgradeCode查询MSI API,以获取此信息


另一种方法是在第一次安装期间写入注册表值(或者甚至可能使用“添加/删除程序”卸载项中已存储的内容),然后使用AppSearch/Reglocator组合将其提取到属性中。

是,我使用主要升级。谢谢你的回答,我担心我将不得不这样做。