msi文件安装出错

今天安装TSVN时刚到一半弹出一个对话框,确定后安装就被中断了,对话框的内容是“Windows Installer无法访问你要使用的功能所在的网络位置,你可以单击确定按钮,再试一次,也可以在下面的框中键入其他包含安装程序包xxx.msi的路径。”

错误对话框类似下图:

1、原以为是TSVN.msi被杀毒软件损坏了,到其他机器上验证了下,并没有损坏。

2、认定是负责解析msi文件的msiexec.exe(即Windows Installer)出什么问题了吧?去看了下系统服务里Windows Installer正常(Windows Installer服务一般启动设为“手动”、状态为“运行”)。系统菜单“运行->cmd->msiexec.exe /unregserver”,然后重装了Windows Installer 4.5(为了排除兼容性问题还特地先装3.1,为此还折腾了一番),再“运行->cmd->msiexec.exe /regserver”,人工到系统服务里启动 Windows Installer服务(或者“运行->cmd->net start MSIServer”),这样Windows Installer本身总该没问题了吧,再运行TSVN.msi问题依旧。

3、会不会是Windows Installer的Shell的命令行有问题,从而导致以错误的参数运行了TSVN.msi?“运行->regedit”打开注册表编辑器,查找“msiexec”,当找到“HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Msi.Package\shell\Open\command”键值时停下,其值为“"%SystemRoot%\System32\msiexec.exe" /i "%1" %*”这个命令行是正确的本地安装参数“/i”,我尝试将此命令行参数该成“/a”即“"%SystemRoot%\System32\msiexec.exe" /a "%1" %*”,双击TSVN.msi不再弹那个该死的对话框了,安装也顺利进行完,但是安装并没有真正成功,快捷方式什么的都没有出现,只是把msi解包到了本地那个指定的路径。这说明不是shell的问题,把命令行改回原样“"%SystemRoot%\System32\msiexec.exe" /i "%1" %*”。

4.最后我成功了。我怀疑“是不是TSVN.msi在安装过程中,发现以前没卸载干净的注册表信息,所以才会弹出那个该死的对话框呢?”我找来另一个msi文件是VC2008的运行时安装程序名叫vcredist.msi,双击vcredist.msi整个安装过程正常并没有出现任何错误对话框。我仔细比较了一下vcredist.msi和TSVN.msi的属性页,vcredist.msi只是比TSVN.msi多了一个微软的数字签名,我用工具也给TSVN.msi打上了正确的数字签名,双击问题依旧。同时前面也说过我在其他机器上验证过TSVN.msi,是可以正常安装的,至此,我断定是注册表里有“残余的安装信息”误导了Windows Installer错误执行msi文件才会在执行TSVN.msi安装过程中出现那个错误对话框的。“运行->regedit”打开注册表编辑器,查找“svn”,把是有关TSVN的所有注册表信息项全部删除(做此操作前注意备份注册表,以免出错),确定打扫干净之后双击TSVN.msi,果然顺利完成安装,没有出现那个该死的错误对话框了,快捷方式等也都安装出来了,问题解决了一切都正常了。

后来看见网上有人安装QQ也碰见了类似这样的问题,所以写篇博客,希望能给大家有些帮助。QQ的注册表项可能比较多,所以在清理的时候注意仔细和谨慎,问题的性质应该如出一辙,祝大家好运。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dj0379

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值