我创建了一个自定义安装程序 dll,一切正常。我只想Uninstall
从我当前的安装中调用另一个安装程序的方法。当我这样做时,我得到error code 1618
(表示另一个安装程序已经在运行)。但是,当我从测试项目中调用uninstall
同一产品时,它工作正常。
任何人都可以提出解决方案吗?
我可以从当前安装程序中卸载另一个应用程序吗?
我创建了一个自定义安装程序 dll,一切正常。我只想Uninstall
从我当前的安装中调用另一个安装程序的方法。当我这样做时,我得到error code 1618
(表示另一个安装程序已经在运行)。但是,当我从测试项目中调用uninstall
同一产品时,它工作正常。
任何人都可以提出解决方案吗?
我可以从当前安装程序中卸载另一个应用程序吗?
不支持从另一个安装程序调用安装程序(安装或卸载)的 AFAIK。它在早期版本的 Windows Installer 中受支持,但现在已被弃用,即便如此我也不确定是否支持卸载其他产品。现在推荐的方法是使用引导程序来检查和安装任何先决条件。从理论上讲,您还应该能够使用自定义引导程序卸载产品,但是编写一个程序并不是一件容易的事。同样从用户机器上默默地卸载某些东西也不一定是一件好事。使用 Visual Studio 2005 通用引导程序,您应该能够生成一个引导程序来检查是否安装了其他产品并要求用户卸载它。
如果这个其他产品是您自己的(因此您可以访问安装程序应该执行的操作),或者您想做一些肮脏的事情,您可以尝试自己删除文件/注册表项/等,然后在注册表中取消注册程序(HKEY_LOCAL(MACHINE|USER)\Software\Microsoft\Windows\CurrentVersion\Uninstall\{PROGRAM}
)。这不是有史以来最伟大的想法,但如果您可以访问安装程序应该执行的操作,那么它会为您工作。