安装VirtualBox的一个回滚问题

    先来说说问题吧,以前在pc上开发Android软件,模拟器采用VirtualBox加上Genymotion的方式,某天安装了某款模拟器,名字叫做天天模拟器,这是一个国产的,原理估计跟Geny差不多,在安装的时候,天天自带的模拟器把我的原来的VirtualBox给取代了,结果导致Genymotion无法正常工作,于是卸载了天天模拟器。

    重新安装了VirtualBox,这时候出现了一个问题,那就是在安装软件的时候,卡在了安装完成的时候,软件提示还需要几分钟来完成安装,结果等了很久也没有安装完成,于是杀掉安装进程。

    那么软件是否安装了呢?答案是事实上是安装完成了,因为我可以正常启动Genymation了,杀掉之后,打开Genymotion,正常运行。

    问题来了,由于你杀掉了正常的安装进程,msi(一个windows的软件安装服务)记录到你上次的安装过程未完成,于是乎,每当我要安装新的软件,或者卸载软件的时候,都会因为上次的VirtualBox没有安装完成,导致回滚,结果VirtualBox被全部删除了,电脑又处于没有虚拟机的状态。

    好吧,那我继续安装VirtualBox虚拟机,问题依然存在,卡在了安装完成那里,但是实际上已经安装了。那么如果我继续杀死的话,那么以后安装或者卸载软件的话,还是会遇到回滚问题,导致你的虚拟机被删除。如此反复循环,这样下去肯定是不行的。

    一番百度,毫无疑问,没有任何有用信息,最后谷歌之后,发现了一个解决方案,网址是http://serverfault.com/questions/496109/rollbacksuspendedmsiinstallfromcommandline

   大概的解决方式是打开注册表,定位到HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress 

    从注册表的名字可以看得出来,是正在安装的进程,定位到具体键值之后,发现有一个这样的键值
记录的文件位置在C:\Windows\Installer\2e282.ipi,定位到目录下,按照时间排序,发现该文件的日期果然在今天,恰好在我安装VirtualBox的时候,同样的还有几个最新文件,其中有个msi,点击之后,恰好是虚拟机的安装文件,可以推测出确实是记录了VirtualBox的正在安装信息。

    因此在安装或者卸载其它软件的时候,注册表的键值提示msi安装系统,有个未完成安装的软件,于是执行回滚,虚拟机因此被删除。

    现在删除掉这个键值之后,进行其它软件的安装以及卸载测试,发现没有回滚虚拟机了,成功解决该问题。

你可能感兴趣的:(VirtualBox,安装失败,安装回滚)