我创建了一个自定义的intall dll&一切都工作正常。我只想从我当前的安装中调用另一个安装程序的卸载方法。当我这样做时,我得到错误代码1618(表示另一个安装程序已经在运行)。但是,当我调用相同产品的卸载形式测试时项目它工作正常。可以有人建议解决这个问题。我可以从当前安装程序卸载另一个应用程序吗?
答案 0 :(得分:1)
不支持从其他安装程序调用安装程序(安装或卸载)的AFAIK。早期版本的Windows Installer支持它,但现在已弃用,即便如此,我也不确定是否支持卸载其他产品。 现在推荐的方法是使用引导程序检查并安装任何先决条件。从理论上讲,您还应该能够使用自定义的bootsrapper卸载产品,但是编写一个并不是一项简单的练习。 从用户机器上静默卸载某些东西也不一定非常好。使用Visual Studio 2005 Generic Bootstrapper,您应该能够生成一个引导程序,检查是否已安装其他产品并要求用户将其卸载。
答案 1 :(得分:0)
如果这个其他产品是您自己的(因此您可以访问安装程序应该执行的操作),或者您想要做一些脏事,您可以尝试自己删除文件/注册表项等,然后取消注册该程序注册表(HKEY_LOCAL(MACHINE|USER)\Software\Microsoft\Windows\CurrentVersion\Uninstall\{PROGRAM}
)。这不是最好的想法,但如果您可以访问安装程序应该做的事情,那么它将适合您。