智能软件安装程序 - 在上次故障时恢复

时间:2009-11-20 16:24:58

标签: .net installer resume

有没有人曾经在.Net中编写过你自己的软件安装程序,这些安装程序具有“最后一次失败的拾取”功能?

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

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

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

我在网上搜索了“软件安装简历”,当然,我正在收到各种简历写作技巧。是否有更多关键性的关键词供任何人推荐?

谢谢你, TimD

1 个答案:

答案 0 :(得分:0)

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

这样当我重新运行安装程序时,我不必担心以前的组件“被遗忘”并导致问题。在理想的世界中,我也不希望被提示覆盖现有文件,因为我不知道应该为应用程序使用哪个版本的某些第三方DLL。

因此,对于像设置或操作SQL Server数据库这样的东西,我希望数据库语句在可以回滚的事务中执行。根据更改的程度,采用数据库备份可能很聪明,但您可能不必将其烘焙到应用程序中。我喜欢Red Gate工具如何在数据同步过程中采用备份,因此它保证了我的安全,并且仍然保持流程简单和简化。

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