我工作的公司使用C ++ Builder6。我们从概念开始就一直在开发本机代码。我们的旗舰产品完全用本机代码编写。
一触即发,进入.NET Framework。我跌倒,钩,线和坠子。我相信管理层相信.NET应该绝对是我们所有新软件开发的新框架,并且我们应该开始尽快迁移现有的代码行。有了所有的好处,并不需要太多说服力。他们照常接受我的提议。
至此,我开始开发我的第一个.NET应用程序。一切都按计划进行。该项目只是我们产品的一个组成部分。因此,我要为这个新组件创建一个安装程序。作为一家公司,我们为使用户的操作尽可能简单而感到自豪。即使是拥有数千名开发人员的Microsoft,也不会像我们那样创建安装程序。例如,当您安装Microsoft CRM时,您将仅获得需要安装的故障列表和先决条件,然后才能继续。不是我们。决不。如果您需要什么,我们将为您安装。
这使我们的安装非常容易。.NET Framework未安装?没问题!我们会为您服务。需要SQL Native Client吗?精细!
问题是,既然我们的解决方案的一个组件是用.NET编写的,它会使安装过程变得异常复杂。在开始安装我们的产品之前,我需要执行以下操作:
检测是否已安装必备软件
如果没有安装
验证是否已成功安装
下一个前提条件
要安装.NET Framework,我首先需要Windows Installer 4.5。但是针对不同的操作系统有不同的版本,因此我添加了操作系统检测并启动正确的EXE。哦,.NET Framework已经与2k8打包在一起,并且安装程序exe无法在其上运行,您必须运行OCSetup.exe,并带有参数进行安装。
如此下去。然后需要安装SQL Express 2005。依赖关系再次增加。
我与管理层争辩说,即使Microsoft也不会让用户这么容易。他们的回答是,我们没有理由以这种方式不比他们更好。除了我认为他们采用其方法的理由很充分之外,我无法与之争论。
突然,我们的安装程序很大。.NET的所有先决条件,甚至都没有涉及64位支持,因为它具有要安装的EXE的单独范围。因此,现在我们希望用户能够下载“快速”评估。真是笑话。您需要下载500MB才能运行30MB的应用程序。大多数安装软件包是先决条件。
管理层认为我们有太多的依赖项/先决条件。我完全理解。他们建议我们从.NET框架转移到本机,在安装方面仍然“轻松”。这就是我一个人要支持.NET的地方,它从总体上解释了好处,改进的开发体验,更容易的维护和整体代码质量。我的另一部分完全同意他们的意见!在.NET中进行开发仅需要您安装太多其他先决条件,这会使安装复杂化。
是的,一些.NET倡导者将宣称所有内容都应安装在已修补和更新的操作系统上。的确如此,但并非所有客户都拥有此功能,只是说“对不起,先更新”就不会削减成本。请记住,我们为整体用户体验感到自豪。
现在,我们正在考虑再次编写本机代码,我知道我们在开发速度和.NET的所有优点方面正在遭受损失。但是我们正在这方面取得进展,无论您看与否,无论规模如何,我们都会有所作为。由于我们拥有本机代码开发技能,而.NET实际上是我们的新天地,因此退后甚至是有意义的。
我的问题是:如果我想继续将所有产品迁移到.NET,贵公司对这个问题的看法是什至根本没有问题,我向管理层建议的业务案例是什么样的?