本意是想强调是:1)安装包的重要性,即便腾讯这样的大公司,出了问题,就是笑柄;2)安装包也得有考虑用户体验,微软的具有借鉴意义。
前几天在cnbeta上看到一则新闻:《囧:Win8开着任务管理器就无法安装腾讯TM》。
多数看官看完后,都是捧腹大笑,觉得TM的这安装包做的也……too simple, sometimes naive,着实很傻很天真啊。
不过俺重点不是给大伙讲笑话的, 我们来看看到底出了什么问题,顺带看看有什么好的方法加以改进?
1,原因:
貌似很直观,就是安装包在pre-check的时候误将Task Manager进程当作Tencent Messenger进程,只因他俩都是同样的Image File Name,即TM.exe。
2,分析:
其实通过“名字”来查找某个进程是否已经存在,对安装包来说,相当的普遍,包括MS。做的更加夸张地要算是MS了,举个例子,为了装个VS 2010的SP1,它会强制你关闭所有Window Title包含“VS”信息的,包括资源管理器,IE,甚至某个在Notepad中已经打开的txt文件,而这个txt文件文件名恰巧是“VS Serial number”……
另一个典型的例子,如何保证某个程序只运行一个实例?对了,貌似也是通过判断进程名存在否,是吧?!
有同学可能就问了,为嘛不弄个精确匹配呢?嗯……让俺的理解是,不是不想做,而是迄今为止,还没有做的必要,靠名字匹配几乎没出什么问题……额……当然除了这倒霉的TM.exe~
另外,有个问题得提醒各位看官,人家TM支持系统列表里面是没有Win 8的!也就说,您可以嘲笑这程序不够向前兼容,但不能怪人家没提醒您,这东西就不应该被装在Win 8上的,如果你非要给他争一下,俺只能说“您老太较真了!” 。当然TM在Win 8正式release后,肯定得想办法解决这个问题的,这是后话。
3,延伸:
让俺来理解这个“笑话”,他的本质不是简单的以名字来判定是对是错的问题,而是某种用户体验的问题。就拿上面MS强制关闭很多不相关进程的操作来说,很少碰到有人抱怨你微软太霸道,让用户关闭了那些不应该关闭的程序。同样的是关闭后再继续,区别就在于;一个是隐式提醒,一个是显示提醒。
这两个安装流程到底那个更胜一筹呢?您也有个数了吧。