我的任务是调查我们的部署,并了解它们可以简化的地方。现在我们有4种不同的配置(Debug / Dev,Test,Staging,Release)和4 * .config文件。我们的任务将根据活动配置使用适当的* .config预构建时间覆盖app / web.config。创建了一个MSI,我们在发布之夜对该组件进行了全面部署。
这并不完全理想,因为如果我们在配置文件中更改某些内容,或者在特定视图中修复拼写,我们必须重新部署整个内容。不要说MSI偶尔需要重启。另一个提出的选择是创建MSI,而不是创建MSI,我们可以创建自定义部署/回滚脚本,并具有执行增量释放的能力。
这里有没有人尝试过两种方式的部署?您找到了哪些优点/缺点?还有第三种方法我们没有想过吗?
编辑:只是为了澄清一些事情......我们不会向客户部署。所有软件都部署到我们的服务器。 (一些网站,以及很多Windows服务)。我们从不改变生产中的东西。我们实际上使用VS中的内置系统来创建MSI,因此该部分不是可怕的部分。对我来说,如果你不得不改变1个视图,重新部署整个网站是没有意义的。我们还必须部署到多个服务器。现在,通过在每个上运行MSI来完成。
答案 0 :(得分:2)
MSI专业人士:
MSI缺点:
脚本专业人士:
脚本缺点:
我遇到的有助于MSI的一件事是WiX(http://wix.sourceforge.net/),但即便是WiX在很多方面看起来也很神秘。我们使用MSBuild和WiX的组合来进行自动构建和部署/安装,它对我们来说没问题。
总的来说,我可能更倾向于在脚本上进行MSI / WiX(或其他安装工具包)部署。 MSI是在Windows上进行安装的标准方式,一旦你开始工作,你通常不需要做太多改变。在将最终的MSI包放在一起之前,MSBuild或其他一些构建框架(NAnt等)可用于设置部署(重命名文件,执行字符串替换等)。
答案 1 :(得分:1)
运行一家构建网络应用程序五年的开发公司,我们一直在努力解决这个问题并尝试了一系列解决方案。以下是一些提示:
我不知道这些提示指向MSI或脚本。我认为这是你最熟悉的问题。 MSI很难定制,但易于运行和管理。 Microsoft拥有许多工具来管理组织或服务器场中MSI的部署。脚本可能需要自定义工具和自定义工具或生产端的大量手动工作。
我们使用Nant和自定义部署工具运行脚本。这些天(VS2008)构建部署包更容易。
答案 2 :(得分:1)
你最好的选择是让一个像样的MSI构建者来完成这项工作 - 我在谈论InstallShield等(有几个,所以要四处看看)。虽然这些费用总是很高,但它们可以为您节省大量的时间/金钱/痛苦。话虽如此,痛苦并没有完全消除,只是减少了:)
您需要做的任何棘手事情都可以作为msi中的自定义任务完成 - 您甚至可以使用Visual Studio附带的安装程序构建器(如果您使用的是VS)执行此操作。
我对你的配置文件有一个建议 - 包括msi中的所有四个,然后有一个可以从命令行设置的公共属性。然后,您可以修改该公共属性以安装相应的配置文件(并设置该属性的默认值,以便安装发布配置)。这样,您的客户只需使用msi并获取正确的配置文件,但您的测试团队可以通过更改公共属性的值来获取其配置文件;他们用来安装的命令行是:
msiexec /i "MyInstaller.msi" CONFIG=test
您可以非常轻松地安装脚本,但如前所述,您还需要编写卸载脚本。使用安装脚本可以阻止您在获得完成后获得产品的Windows认证。但这并不意味着您不应该使用安装脚本,它们可能非常适合您的需求。或者,您可以通过在msi中将脚本作为自定义操作运行来查看使用组合脚本/ msi方法。