Pregunta

Estoy planeando un procedue para liberar nuestro software a nuestros clientes utilizando una versión avanzada de un procedimiento existente que utiliza secuencias de comandos por lotes ventanas. Tengo la esperanza de mejorar este proceso y automatizar la instalación de los siguientes elementos:

  • Archivos. Los archivos se copian simplemente a un destino.
  • MSSQL bases de datos. Creo que voy a utilizar el comando OSQL para ejecutar estos contra una base de datos.
  • directorios virtuales IIS. versiones de servidor de ventanas generalmente tienen instalado el kit de herramientas de IIS que tiene algunas herramientas para la creación de directorios virtuales y otras cosas desde la línea de comandos así que voy a usar eso. Creo que el "iiscnfg" es el que yo utilizar para insertar archivos de configuración previamente guardados en IIS.
  • Servicios de Windows. Nuestros servicios tienen la posibilidad de instalar sí mismos desde la línea de comandos.

Así que para cada implementación de aplicaciones que tengo una estructura como esta:

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

Así que, básicamente, se abre un terminal y CD en el directorio de prensa, ejecutar un comando algo como:

get-release "Release3"

que se desarrollará una serie de comandos en todas las aplicaciones en el directorio release3 y copiar todos los archivos, configuraciones, instalar todas las bases de datos y directorios virtuales de IIS.

Hay un poco más de lo que lo hace como copia de seguridad del directorio de destino para los archivos, etc., pero es irrelevante para el momento.

Mi pregunta es si alguien tiene alguna experiencia se realiza la implantación de esta manera y si hay cualquier error que se puede aprender de otras experiencias pueblos.

Desafortunadamente, no podemos ir con los paquetes MSI o que uno de NullSoft (cuyo nombre se me escapa por el momento). Si no es hecho como esto se hace manualmente, así que estoy realmente tratando de ayudar a mí aquí.

¿Fue útil?

Solución

He rodado varias secuencias de comandos como este, y las partes más feas que tratar son la gestión de errores - ¿Cómo se detecta errores, ¿qué hacer cuando ocurren, puedo lograr la regresión de todos los cambios realizados hasta la fecha, y por lo tanto en. Relativamente simple, si está haciendo una instalación nueva, no casi tan simple si está actualizando un sistema existente. (Nunca se debe asumir que funcionará perfectamente cada vez -. MS actualización de mañana podría romper el guión de hoy en día, después de todo)

Hay sólo unas pocas cosas;) no se puede hacer razonablemente dentro de un archivo por lotes. Se puede caer en los scripts VB, scripts de Java, algunos Powershell llama, o cualquier otra cosa para manejar las cosas difíciles?

Otros consejos

No veo ningún problema de hacer este tipo de cosas con un archivo por lotes. Sin embargo, vas a tener que pensar un poco en lo que algunas de las diferencias entre las máquinas (directorios perdidos, directorios ya existentes, archivos ya existentes, las versiones de archivos, etc.) podría ser, frente a ellos, y la prueba muy bien en una variedad de máquinas.

Es una lástima que no se puede usar un instalador, debido a los instaladores ya mitigar la mayoría de estos problemas para usted. En esencia, se le rodar su propio instalador, y no se beneficiará de las lecciones aprendidas, mejores prácticas, etc., que un instalador le dará.

Otra cosa que podría no ser capaz de prescindir de un instalador es instalar un archivo que está siendo bloqueado por el sistema operativo. Instaladores ocupan de esto copiando el archivo en una ubicación temporal, poniendo una "carga en el reinicio" entrada en el registro, y luego pide al usuario que reinicie el equipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top