我的问题与标题略有不同,
我正在覆盖安装程序类方法,并且我编写了自定义代码,在安装最新版本之前卸载以前版本的应用程序。所以这个卸载是 MSI 的一部分。
所以我希望 MSI 首先卸载现有安装,然后开始自行安装。我在OnBeforeInstall()
方法中有这段代码。
protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
{
//Logic to uninstall pervious versions using product code
base.OnBeforeInstall(savedState);
}
但我注意到,甚至在安装 MSI 之前,安装 MSI 会提取所有文件并覆盖现有安装文件。那么,如果我想在执行 MSI 开始其任何操作之前执行卸载,我应该在哪里编写我的逻辑?