TONT 41363 为什么不干脆屏蔽掉那些依赖不在文档中的做法的应用程序呢?

错的不是我,错的是西园寺世界。

原文链接:https://blogs.msdn.microsoft.com/oldnewthing/20031224-00/?p=41363

Because every app that gets blocked is another reason for people not to upgrade to the next version of Windows. Look at all these programs that would have stopped working when you upgraded from Windows 3.0 to Windows 3.1.

因为每一个被屏蔽的应用程序都会成为人们选择不再升级到下一个版本Windows的理由。看看(下面这个注册表键值里)这些从Windows 3.0升级到Windows 3.1后会停止工作的程序的列表吧:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Compatibility

Actually, this list is only partial. Many times, the compatibility fix is made inside the core component for all programs rather than targetting a specific program, as this list does.

实际上,这里列出的只是其中一部分。曾经有很多次,有关的兼容性修补都是在系统的核心组件中、面向所有程序进行修补的,而不是像上面那个列表一样针对某个特定的程序进行。

(The Windows 2000-to-Windows XP list is stored in your C:\WINDOWS\AppPatch directory, in a binary format to permit rapid scanning. Sorry, you won’t be able to browse it easily. I think the Application Compatibility Toolkit includes a viewer, but I may be mistaken.)

(Windows 2000到Windows XP的列表存储在C:\WINDOWS\AppPatch目录中,以二进制格式进行存储,以避免被频繁扫描。不好意思,你没有办法轻而易举地对其进行浏览,我记得应用程序兼容性工具包(Application Compatibility Toolkit)里面好像有个浏览器,不过也可能记错了也说不定。)

Would you have bought Windows XP if you knew that all these programs were incompatible?

要是你事先知道有那么多程序与Windows XP不兼容,你还会选择购买XP吗?

It takes only one incompatible program to sour an upgrade.

只要有一个不兼容的程序,就足以阻止一次升级了。

Suppose you’re the IT manager of some company. Your company uses Program X for its word processor and you find that Program X is incompatible with Windows XP for whatever reason. Would you upgrade?

假设一下,你是某家公司的IT经理,你的公司使用某个应用X进行文字处理工作,然后你得知这个应用X出于不管什么原因与Windows XP不兼容,你还会(将公司的电脑)升级(到Windows XP)吗?

Of course not! Your business would grind to a halt.

当然不会!这么做明摆着会让公司停摆。

“Why not call Company X and ask them for an upgrade?”

『为什么不找软件的开发公司做升级呢?』

Sure, you could do that, and the answer might be, “Oh, you’re using Version 1.0 of Program X. You need to upgrade to Version 2.0 for $150 per copy.” Congratulations, the cost of upgrading to Windows XP just tripled.

当然可以啦,然后对方大概会回复:『噢,你用的是我们软件的1.0版本,你得升级到(兼容XP的)2.0版本,$150一份。』恭喜!选择不升级到Windows的理由又多了一条。

And that’s if you’re lucky and Company X is still in business.

而且要是这个软件的开发公司没歇业,可以说是很幸运了。

I recall a survey taken a few years ago by our Setup/Upgrade team of corporations using Windows. Pretty much every single one has at least one “deal-breaker” program, a program which Windows absolutely must support or they won’t upgrade. In a high percentage of the cases, the program in question was developed by their in-house programming staff, and it’s written in Visual Basic (sometimes even 16-bit Visual Basic), and the person who wrote it doesn’t work there any more. In some cases, they don’t even have the source code any more.

回忆起我们面向企业的安装/升级开发组几年前进行的一次调查,基本上每家公司都有至少一个『决定性的』应用程序,Windows必须支持这个应用,否则这些公司就不会升级(到新版的Windows)。这些案例中,有很大概率这个(决定性)应用是由这些公司自家的技术人员编写的,用的还是Visual Basic(有时甚至是16位的Visual Basic),而编写这个程序的人早就不在这家公司工作了。

And it’s not just corporate customers. This affects consumers too.

而且,这个问题不仅影响企业用户,也影响普通用户。

For Windows 95, my application compatibility work focused on games. Games are the most important factor behind consumer technology. The video card that comes with a typical computer has gotten better over time because games demand it. (Outlook certainly doesn’t care that your card can do 20 bajillion triangles a second.) And if your game doesn’t run on the newest version of Windows, you aren’t going to upgrade.

对于Windows 95,我的应用程序兼容性工作主要针对游戏。游戏是支撑面向消费者科技最重要的因素。随整机配置的显卡的性能随着年份不断提升,其原因即是游戏需要它们(更强的性能)。(Outlook肯定不在乎你的显卡能不能每秒绘制200亿个三角形啦。)如果(心爱)的游戏不能跑在最新版的Windows上,用户自然是不会选择升级的。

Anyway, game vendors are very much like those major corporations. I made phone call after phone call to the game vendors trying to help them get their game to run under Windows 95. To a one, they didn’t care. A game has a shelf life of a few months, and then it’s gone. Why would they bother to issue a patch for their program to run under Windows 95? They already got their money. They’re not going to make any more off that game; its three months are over. The vendors would slipstream patches and lose track of how many versions of their program were out there and how many of them had a particular problem. Sometimes they wouldn’t even have the source code any more.

总之,游戏开发商与前述的那些(商业软件)大公司有很大的相似性。我给许多的游戏开发商们打了一个又一个电话,试图帮助将他们的产品能够运行在Windows 95上。一言以蔽之,这些公司根本不在乎。游戏软件的生命周期只有几个月而已,然后就无所谓了,何苦再开发个补丁让(已经过气的)他们的程序能在Windows 95下运行呢?毕竟钱都已经到手了,他们已经不在准备从这个游戏上赚钱了,它三个月的生命周期已经过去了。开发商只管唰唰地发补丁,然后就失去了对产品现在已经有多少个版本的控制、其中又有多少有特定的某些问题,有时候甚至连源代码都不在他们自己手里了。

They simply didn’t care that their program didn’t run on Windows 95. (My favorite was the one that tried to walk me through creating a DOS boot disk.)

这些公司根本就不在乎他们的产品能不能在Windows 95上运行。(我最喜欢的一个例子是其中有一家反过来教我创建一张DOS引导盘。)

Oh, and that Application Compatibility Toolkit I mentioned above. It’s a great tool for developers, too. One of the components is the Verifier: If you run your program under the verifier, it will monitor hundreds of API calls and break into the debugger when you do something wrong. (Like close a handle twice or allocate memory with GlobalAlloc but free it with LocalAlloc.)

哦,对了,还有前面我提到的那个应用程序兼容性工具包(Application Compatibility Toolkit),对于开发者也是一件很棒的工具。工具包中的组件之一是验证程序:把你的程序置于其下运行,验证程序就会监视着上百个API调用的情况,并当出现问题时步入调试器(帮助解决问题)。(例如,重复关闭某个句柄,或者用GlobalAlloc分配内存,但却用LocalAlloc释放这块内存。)

The new application compatibility architecture in Windows XP carries with it one major benefit (from an OS development perspective): See all those DLLs in your C:\WINDOWS\AppPatch directory? That’s where many of the the compatibility changes live now. The compatibility workarounds no longer sully the core OS files. (Not all classes of compatibility workarounds can be offloaded to a compatibility DLL, but it’s a big help.)

在Windows XP中,新的应用程序兼容性架构带来了一项重大改进(从操作系统开发的角度来看):看到C:\Windows\AppPatch下面的那些DLL了吗?那就是目前有效的许多兼容性补丁们,这些补丁不再把系统的核心文件搞得又脏又乱了。(并非所有的兼容性修补类都能转化为兼容性DLL的形式,但这(对减轻兼容性补丁对系统核心文件的污染)仍然是一大助益。)

Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

 剩余字数 ( Characters available )

注:请不要在评论中插入任何链接,否则将自动被识别为垃圾评论,博主将完全看不到。

Notice: please DO NOT add any links in your comment, otherwise it would be identified as SPAM automatically.

*