在重大升级期间使用已安装应用程序的位置作为默认路径
Use installed app's location as a default path during a major upgrade
我有一个应用程序,我正在为其编写主要升级。
唯一持久的是 UpgradeCode
。
我想要的是使用以前安装的版本的位置作为安装的默认路径。
我天真的解决方案是 运行 一个 CustomAction,它使用 AppSearch
table.[=15= 获得的变量 APP_LOCATION
修改 INSTALLDIR
]
- 是否有传统的方法可以通过 MSI 或 InstallShield 实现?
- 如果 AppSearch table 中包含值,我可以使用 MSI table 中的条件来使用“APP_LOCATION”吗? 对于例子:
INSTALLDIR = APP_LOCATION ? APP_LOCATION : MY_DEFAULT_INSTALL_DIR
(语法是强调逻辑,idk if 有效)
您可以使用以下方法获取以前的安装位置:
Msi.GetProductInfo(之前安装的产品代码,“InstallLocation”);
要获取以前安装的产品代码,请使用主要升级设置的public 属性。这个 public 属性 例如 OLD_PRODUCT_DETECTED 属性 可以在 Upgrade table 的 ActionProperty 列中找到。它的值将设置为产品代码 ({GUID})。
确保在 FindRelatedProducts 操作后调用上述方法,如果找到以前的安装,它将 public 属性 的值设置为 {GUID}。
我有一个应用程序,我正在为其编写主要升级。
唯一持久的是 UpgradeCode
。
我想要的是使用以前安装的版本的位置作为安装的默认路径。
我天真的解决方案是 运行 一个 CustomAction,它使用 AppSearch
table.[=15= 获得的变量 APP_LOCATION
修改 INSTALLDIR
]
- 是否有传统的方法可以通过 MSI 或 InstallShield 实现?
- 如果 AppSearch table 中包含值,我可以使用 MSI table 中的条件来使用“APP_LOCATION”吗? 对于例子:
INSTALLDIR = APP_LOCATION ? APP_LOCATION : MY_DEFAULT_INSTALL_DIR
(语法是强调逻辑,idk if 有效)
您可以使用以下方法获取以前的安装位置:
Msi.GetProductInfo(之前安装的产品代码,“InstallLocation”);
要获取以前安装的产品代码,请使用主要升级设置的public 属性。这个 public 属性 例如 OLD_PRODUCT_DETECTED 属性 可以在 Upgrade table 的 ActionProperty 列中找到。它的值将设置为产品代码 ({GUID})。
确保在 FindRelatedProducts 操作后调用上述方法,如果找到以前的安装,它将 public 属性 的值设置为 {GUID}。