0

有没有人曾经在 .Net 中编写过您自己的软件安装程序,具有“在最后失败时拾取”的能力?

例如,假设安装复制了一堆文件,注册了一些 DLL,设置/操作数据库 (MS SQL),并设置了使用所述数据库的数据驱动网站 (IIS)。

如果数据库操作部分失败,退出安装程序,修复问题,然后重新运行 - 只是这一次安装程序跳过文件复制和 DLL 注册,并开始进行数据库工作。

我当然可以编写自己的 XML 日志文件,安装程序可以找到并驱动该过程,但与其重新发明轮子,我想知道是否有既定的模式和实践,或行业标准的方式来做到这一点?

我在网上搜索“软件安装简历”,当然,我得到了各种各样的简历写作技巧。是否有更多人可以建议的主题准确的关键字?

谢谢你,蒂姆D

4

1 回答 1

0

我不知道你想要这个功能的理由或理由,但这听起来不是最好的主意。从管理的角度来看,我真的很喜欢安装程序以原子方式运行 - 他们要么成功,要么失败,并撤消他们对系统所做的任何更改。

这样,当我重新运行安装程序时,我不必担心以前的组件会“落后”并导致问题。在理想情况下,我也不希望被提示覆盖现有文件之类的事情,因为我不知道应用程序应该使用哪个版本的第三方 DLL。

因此,对于设置或操作 SQL Server 数据库之类的事情,我希望数据库语句在可以回滚的事务中执行。根据更改的程度进行数据库备份可能是明智的,但您可能不必将其烘焙到应用程序中。我喜欢 Red Gate 工具如何在其数据同步过程中内置备份步骤,这样既保证了我的安全,又使过程保持简单和精简。

这是我的推理。如果我运行安装并将其命名为“MySite”,它创建了一个名为 MySite 的数据库和 IIS 虚拟目录,并且安装失败,根据您的推理,DB 和 IIS 目录将被搁置。现在,如果我是管理员,我不想假设您的安装程序会干净地处理现有的部分,所以我下一次安装 MySite2,并尝试手动清除 MySite 的部分。

于 2009-11-20T17:02:12.420 回答