我一直想知道为什么
Windows Installer一次只允许您安装一个程序.如果不能启动多个安装,尤其是在设置Windows的新安装时,这是非常令人沮丧的.这是什么原因?
当并发安装发生时,保证正确性是非常复杂的 – 假设它们共享一些文件.这需要某种形式的交易.
原文链接:https://www.f2er.com/windows/369706.html>您需要锁定文件
>如果安装失败,应该可以撤消中间更改(不确定,如果现在可以吗?)
这些概念在事务性数据库中是已知的 – 但主题并不简单,并且您通常在文件系统中找不到完全事务性的基础结构(即使日记文件系统提供了其中的一部分).一个问题是,多个锁可能导致死锁 – 然后您需要死锁检测(或两个安装程序将永远挂起),以及一种处理它的方法.可以避免死锁(例如,始终以相同的顺序锁定文件),但还有其他问题:
如果您预先锁定了所有必需的文件,则可以有效地获得所需的文件:一个安装程序必须等到另一个安装程序完成.如果您未预先锁定所有必需的文件,并继续运行,则可能会导致“事务”失败.这意味着,必须重新启动其中一个安装程序.
然后你可能不得不考虑事务隔离级别 – 完全正确,你的事务必须是“serializable” – 但这并不容易,即使对于许多数据库也是如此.
甚至可能存在处理问题的替代策略,这避免了完全隔离,但通常更难以证明其正确性.
我相信,在并发安装的情况下,我们会遇到更多棘手的安装后问题 – 特别是因为我不认为,操作系统供应商(或分销商)会经历所有麻烦以使其100%清洁.所以我宁愿不使用它,即使它是由操作系统提供的.
注意
但也许你真正想要的甚至不是“同时”安装.也许这就足够了,如果你可以排队安装,然后一个接一个地执行(理想情况下没有问任何问题).这真的是一些东西,其他一些OS(发行版)处理得更好.