批处理脚本安装过程

时间:2009-07-14 01:40:27

标签: batch-file release-management batch-processing

我正在计划一个程序,使用使用Windows批处理脚本的现有过程的高级版本向我们的客户发布我们的软件。我希望改进这个过程并自动安装以下项目:

  • 文件。文件只是复制到目的地。
  • MSSQL数据库。我想我会使用OSQL命令对数据库运行这些命令。
  • IIS虚拟目录。服务器版本的Windows通常安装了IIS工具包,它有一些工具可以从命令行创建虚拟目录和诸如此类的东西,所以我将使用它。 I think the "iiscnfg" is the one I use to insert previously saved config files into IIS
  • Windows服务。我们的服务能够从命令行安装自己。

因此,对于每个应用程序部署,我都有这样的结构:

Releases\
| get-release.bat
| Release1\
| Release2\
| Release3\
| | Content\
| | | Application1\
| | | | bin\
| | | | | Application1.exe
| | | | etc\
| | | | | Application1.config
| | | | db\
| | | | | CreateDatabase.sql
| | | | | CreateTable1.sql
| | | | | CreateTable2.sql
| | | | iis\
| | | | | Application1Web.xml
| | | | pre.bat
| | | | post.bat
| | | | environment.bat
| | | Application2\
| | | Application3\
| | | Application4\
| | Release1.doc

所以基本上你打开一个终端和CD到Releases目录,运行如下命令:

get-release "Release3"

将在Release3目录中的所有应用程序上运行一系列命令,并复制所有文件,配置,安装所有数据库和iis虚拟目录。

还有一些更像是备份文件的目标目录等等,但它暂时无关紧要。

我的问题是,是否有任何人有这样的部署经验,如果有任何错误,我可以从其他人的经验中学习。

不幸的是我们不能使用MSI软件包或者NullSoft软件包(目前这个名字让我失望)。如果没有像这样完成它是手动完成的,所以我真的想在这里帮助自己。

2 个答案:

答案 0 :(得分:1)

我没有看到使用批处理文件执行此类操作时出现任何问题。但是,您将不得不考虑机器之间的某些差异(缺少目录,已存在的目录,已存在的文件,文件版本等),解决它们,并在各种机器。

您无法使用安装程序太糟糕了,因为安装程序已经为您缓解了大部分问题。从本质上讲,您将自行安装您自己的安装程序,您将无法从安装程序提供给您的经验教训,最佳实践等中受益。

如果没有安装程序,您可能无法做的另一件事是安装一个被操作系统锁定的文件。安装程序通过将文件复制到临时位置,将“load on restart”条目放入注册表,然后要求用户重新启动计算机来解决此问题。

答案 1 :(得分:1)

我已经推出了这样的几个脚本,最难处理的部分是错误处理 - 你如何检测错误,你发生什么时做什么,你能否回滚到目前为止所做的所有更改,等等上。如果您正在进行全新安装,则相对简单,如果您要更新现有系统,则不会那么简单。 (你永远不应该认为它每次都能完美运行 - 毕竟明天的MS更新可能会打破今天的剧本。)

只有一些事情;)你无法在批处理文件中合理地做。你可以使用VB脚本,java脚本,一些Powershell调用或其他任何东西来处理这些困难吗?