展开讨论

经验与复盘经验摘录 · 机器翻译

这确实很疯狂,但同时它也相当务实

这真是疯狂的。但同时,它也相当务实。显然,早就有很多软件期望能够编写新版本的系统组件。还有不少有缺陷的软件,意外地期望能够编写旧版本,因为它的开发人员忽视了微软发布的最佳实践(更不用说常识了),也没有先进行版本比较。选择是破坏旧软件,或者让它以为成功了,然后清理它造成的混乱。我打赌他们考虑过其他替代方案(例如,为每 piece 软件沙盒化其自己的系统库,或拦截并覆盖 DLL 调用,从而完全忽略写入的文件),但这些会引入更多的复杂性和重定向,而且可能几乎没有好处。(我不禁想知道,如果在错误的时间发生意外重启或断电,清理工作是否还会进行)。操作系统从一开始就设计得更稳健一些可能吗?当然可以。…

源讨论Windows 95 对安装程序覆盖旧版本文件的防御措施原帖 100 条评论 · 导入时统计
2

这条内容在回应什么?

父级讨论 · 节选

AK

>Windows 95通过在隐藏的C:\Windows\SYSBCKUP目录中保留一些常被覆盖文件的备份副本来解决这个问题。每当安装程序完成时,Windows会检查这些常被覆盖的文件是否确实被覆盖了。 这真是疯狂。我不确定在Wine的Windows 95模式下运行安装程序是否会这样做。

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 2

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

BA

曾经(现在仍然存在)有VerInstallFile,然而这个函数是在Windows 3.1中引入的,而且安装程序可能也想支持Windows 3.0(因为这两个版本之间的时间间隔很短,许多程序都试图同时支持两者),所以他们没有使用它。

完整原文
XE

要记住的是,微软一开始制造了这场混乱。其他一些方面可以归因于“当时业界并不理解$x的价值或正确做法$y”。而有些则是“在互联网和自动更新尚未出现时必须应对的无稽之谈”。 为什么程序会覆盖系统组件?因为微软经常通过VC++或Visual Studio推送更新,如果你用微软的工具来构建程序,你通常需要分发更新后的组件才能让程序正常运行——尤其是Visual C运行库和通用控件。这种情况甚至在Win3.11时代就已经开始,当时你必须更新通用控件才能获得新的“3D”外观。有时更新版本会破坏旧程序,因此安装程序会尝试强制安装“正确”的版本……但这里没有更好的选择。不要这样做…

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。