Determinar cuándo usar el instalador de Windows frente a XCOPY

 

Martin Wasznicky
Microsoft Corporation

Enero de 2002

Resumen: Examina y compara dos enfoques para implementar aplicaciones de Microsoft .NET: el comando DOS XCOPY y la tecnología instalador de Microsoft Windows. (8 páginas impresas)

Objetivos

  • Obtenga información sobre cuándo y cómo usar XCOPY para implementar soluciones de Microsoft® .NET
  • Obtenga información sobre cuándo usar el Instalador de Microsoft® Windows ® para implementar soluciones de .NET

Supuestos

Lo siguiente debe ser cierto para sacar el máximo partido de este documento:

  • Es un programador experimentado de Microsoft® Visual Basic ®
  • Ha implementado aplicaciones con el Instalador de Microsoft® Visual Studio ® o Microsoft Windows Installer 2.0
  • Ha usado el comando XCOPY DOS.
  • Tiene acceso a .NET y Microsoft® Internet Information Server (IIS)

Contenido

Introducción
Uso de XCOPY
Windows Installer
Novedades de Visual Studio .NET
Resumen

Introducción

Microsoft .NET Framework proporciona varias características nuevas para que la implementación de aplicaciones sea tan sencilla como una operación XCOPY. Muchos desarrolladores están familiarizados con los problemas de implementación de aplicaciones COM tradicionales; registrar clases y bibliotecas de tipos, mantener la compatibilidad binaria y la falta de implementación de componentes en paralelo (todo esto se conoce a veces como "DLL HELL"). Regedt32.exe se ha convertido en una herramienta familiar en el arsenal de implementación de componentes del desarrollador debido a las dependencias que COM tiene con el registro.

Con la introducción de ensamblados y control de versiones a la .NET Framework, finalmente se corta el cordón blogón al registro. Dado que los ensamblados se describen automáticamente (contienen metadatos que describen, entre otras cosas, los tipos, los recursos y los ensamblados a los que se hace referencia), se quita su dependencia en el registro, lo que hace que la promesa de las implementaciones de XCOPY sea una realidad.

Sin embargo, la implementación atractiva de XCOPY suena, como cualquier tecnología, tiene sus limitaciones. En función de la complejidad y las necesidades de automatización de un escenario de implementación determinado, es posible que XCOPY no pueda satisfacer las necesidades de implementación de una aplicación. En estos casos, el .NET Framework se integra con la tecnología Microsoft Windows Installer 2.0 para proporcionar opciones alternativas de configuración, distribución e implementación para el desarrollador. Además, Visual Studio .NET proporciona proyectos de instalación e implementación, basados en la tecnología Windows Installer 2.0. Esto permite a los desarrolladores crear fácilmente paquetes de instalación e implementación para las aplicaciones más complejas basadas en el .NET Framework.

En este documento se tratan dos temas principales:

  • Uso de XCOPY: Información general del comando DOS XCOPY usado como instrumento para implementar aplicaciones .NET. Se analizarán los usos y limitaciones de XCOPY, incluida la conservación de la información de ACL de seguridad, los atributos de archivo y carpeta, la generación del sistema de carpetas y las infracciones de uso compartido.
  • Windows Instalador: información general sobre la tecnología Windows Installer y el examen de sus funcionalidades expuestas por .NET. También se examina la idoneidad de cuándo usar la tecnología Windows Installer frente a XCOPY.

Uso de XCOPY

La implementación de aplicaciones normalmente consiste en distribuir la aplicación final o el componente a los equipos en los que se ejecutará la aplicación. Debido a la naturaleza autodescriptible de los ensamblados de .NET, la implementación y la replicación de . Las aplicaciones compiladas en NET que usan XCOPY se han convertido en una realidad porque, en muchos casos, ya no es necesario modificar el registro ni realizar otras tareas auxiliares, como detener un servicio NT de Microsoft® Windows ®. La simplicidad de los ensamblados hace que XCOPY sea una herramienta adecuada para su uso en determinados escenarios de implementación específicos.

Algunas aplicaciones que se prestan muy fácilmente a la implementación y replicación de XCOPY son servicios web XML y ASP.NET aplicaciones web. Anteriormente, estos tipos de aplicaciones se compilaban mediante Internet Information Services (IIS) y componentes COM tradicionales. La instalación de los componentes para estas aplicaciones suele conllevar el registro del componente durante el proceso de implementación mediante la utilidad Regsvr32.exe. Actualizar los componentes existentes era mucho más problemático, ya que IIS colocó un bloqueo de archivo exclusivo en los componentes. La única manera de liberar el bloqueo era apagar IIS. La sustitución de componentes existentes normalmente incluía los pasos siguientes:

  1. Detenga el servicio IIS.
  2. Anule el registro del componente antiguo mediante la utilidad Regsvr32.exe.
  3. Copie el nuevo componente.
  4. Registre un nuevo componente mediante la utilidad Regsvr32.exe.
  5. Inicie el servicio IIS.

Estos pasos ya no son necesarios para servicios web XML y ASP.NET aplicaciones web. IIS no coloca bloqueos de archivo exclusivos en ensamblados .NET y, dado que los ensamblados se describen automáticamente, no tienen que registrarse. Esto hace que ASP.NET aplicaciones basadas en web sea ideal para la implementación y administración de XCOPY.

Por ejemplo, veamos cómo implementar un servicio web XML en un equipo remoto ubicado en el mismo dominio Windows NT. Para los fines de este ejemplo, el equipo cliente donde reside actualmente la aplicación web se denomina CLIENT1 y el equipo remoto, al que se implementará la aplicación web, se denomina SERVER1.

Este es el aspecto de la estructura de directorios de la aplicación web que se va a implementar.

Figura 1. MMC de Internet Information Service en CLIENT1 que muestra el directorio virtual de la aplicación web DemoWebSrv ASP.NET para implementar en SERVER1

Dentro del subdirectorio /bin, hay un ensamblado denominado DemoWebSrv.DLL. La ubicación física de la estructura de directorios en CLIENT1 es C:\INETPUB\WWWROOT\DEMOWEBSRV. La ruta de acceso, C:\INETPUB\WWWROOT en CLIENT1 se asigna al nombre del recurso compartido de red de WWWROOT.

Vamos a iniciar el escenario de implementación siguiendo estos pasos:

  1. Cree un recurso compartido de red en SERVER1 denominado WWWROOT y asígnelo al subdirectorio wwwroot ubicado en el directorio InetPub. Esta es la ubicación predeterminada del sitio web predeterminado de IIS. Esta ubicación se usará como argumento de destino del comando XCOPY.

  2. Copie la estructura de carpetas y los archivos del directorio de aplicación de sitio web DemoWebSrv ubicado en CLIENT1 a SERVER1 mediante XCOPY. En el símbolo del sistema DOS, escriba el siguiente comando (el primer argumento del comando XCOPY es el directorio de origen desde el que copiar; el segundo argumento es el directorio de destino al que copiar):

    XCOPY \\CLIENT1\wwwroot\demowebsrv 
    \\SERVER1\wwwroot\demowebsrv /E /K /R /O /H /I
    
  3. Cree un directorio virtual denominado DemoWebSrv en el sitio web predeterminado en SERVER1 y marcadores como una aplicación. Asígnelo al directorio C:\INETPUB\WWWROOT\DEMOWEBSRV recién creado.

A continuación, encontrará la explicación de los modificadores usados al final del comando XCOPY. Para ver una lista más completa, escriba XCOPY /? en un símbolo del sistema de DOS.

  • / E copia directorios, subdirectorios y archivos del argumento de origen, incluidos los vacíos.
  • / K copia todos los atributos de archivo y carpeta existentes.
  • Cuando se usa XCOPY para copiar archivos o una estructura de árbol de directorios, XCOPY quita los atributos de archivo de forma predeterminada. Es decir, si un archivo tenía establecido el atributo de solo lectura, una vez copiado, ese atributo se pierde. Para mantener (aplicar) los atributos originales con los archivos copiados, use el parámetro / K .
  • / R sobrescribe los archivos marcados como de solo lectura.
  • / O conserva todas las ACL de permisos relacionados con la seguridad del archivo y las carpetas.
  • / H copia los archivos ocultos y del sistema.
  • / I indica a XCOPY que suponga que el destino es un directorio y lo crea si aún no existe. Dado que el argumento de destino, <\\SERVER1\wwwroot\demowebsrv>, es un directorio que no existe, XCOPY lo crea.

Así de simple. XCOPY implementa correctamente el servicio web XML en SERVER1. XCOPY es ideal para implementaciones sencillas como estas y para actualizaciones sobre la marcha. XCOPY también es útil para implementar aplicaciones de escritorio en el cliente.

Al igual que con cualquier tecnología, hay limitaciones sobre cómo y cuándo debe usar XCOPY para implementar . Aplicaciones compiladas por NET. Normalmente, XCOPY solo es útil en escenarios de implementación que se ejecutan de forma sencilla y manual. A continuación se enumeran algunos casos en los que XCOPY no bastaría; esto requeriría un método de implementación más sólido.

  • Implementación automatizada de componentes COM para aplicaciones .NET con las que interoperar. El registro sigue siendo necesario.
  • Compilar previamente un ensamblado en código nativo en el equipo remoto.
  • Instalación de ensamblados en la caché global de ensamblados del equipo remoto.
  • Actualizar archivos que están bloqueados exclusivamente. Por ejemplo, un servicio NT de Windows que se usa para hospedar una solución de comunicación remota de .NET.
  • Instalar. Servicios NT de Windows compilado por NET.
  • Configuración automatizada y creación de configuraciones de directorio IIS, valores de seguridad NTFS, recursos compartidos de red y cuentas de usuario y grupo de Active Directory.
  • Creación automatizada de accesos directos de escritorio, adición a Agregar o quitar programas, creación de entradas de menú Inicio, etc.

Aunque XCOPY funciona bien para soluciones sencillas, obviamente hay muchos casos en los que se garantiza una solución de implementación más sólida. Este tipo de opción se proporciona mediante Visual Studio instalador de .NET, que se basa en la tecnología Windows Installer 2.0. Veamos cómo.

Windows Installer

A menudo, los requisitos de configuración de aplicaciones son mucho más complejos y, a continuación, los que se pueden controlar mediante una estrategia de implementación de XCOPY simple. En muchos casos, la solución de implementación final está destinada a los usuarios finales que carecen de las aptitudes necesarias para configurar manualmente una aplicación. En otros casos, puede haber tantos requisitos de configuración (como la creación de usuarios y grupos, la configuración de seguridad, la creación de estructuras de directorio, etc.) que un programa de instalación automatizado sea necesario para garantizar la precisión y coherencia en el comportamiento instalado de la aplicación final. En cualquier caso, una implementación de XCOPY suele ser insuficiente para cumplir estos requisitos.

Para satisfacer las necesidades de implementación y aplicación más sólidas, se puede usar Visual Studio .NET para compilar paquetes de instalación e implementación. Visual Studio implementación de .NET se basa en la tecnología Windows Installer. Windows Installer es un servicio de instalación y configuración de software que se distribuye con los sistemas operativos Microsoft® Windows ® 2000 y Windows XP y se distribuye libremente a todas las plataformas Win9x y NT4. Windows Servicio de instalador mantiene un registro de información sobre cada aplicación que instala. El entorno de ejecución del instalador de Windows (MSI) inspecciona estos registros durante la ejecución de paquetes de implementación. Cuando se desinstala una aplicación, se comprueban los registros para asegurarse de que ninguna otra aplicación dependa de sus componentes antes de quitarla. Windows Installer 2.0 se ha ampliado para proporcionar las siguientes características para admitir ensamblados .NET:

  • Instalación, reparación o eliminación de ensamblados en la caché global de ensamblados.
  • Instalación, reparación o eliminación de ensamblados en ubicaciones definidas por el usuario.
  • Reversión de instalaciones, reparaciones o eliminaciones incorrectas de ensamblados.
  • Instalación a petición de ensamblados en la caché global de ensamblados.
  • Instalar a petición de ensamblados en ubicaciones definidas por el usuario.

Además de estas características, Visual Studio proyectos de implementación de .NET permite todas las comodidades de otros programas de instalación, como leer y escribir claves del Registro, la creación de directorios, el registro de componentes, la recopilación de datos introducidos por el usuario durante la instalación, etc. Otras características incluidas son:

  • La capacidad de establecer condiciones de inicio, como comprobar el nombre de usuario actual, el nombre del equipo, el entorno físico, el sistema operativo actual, la existencia de .NET CLR, etc.
  • La capacidad de ejecutar un programa o script personalizado una vez completada la instalación real. Los datos recopilados por la instalación se pueden pasar al programa y toda la instalación se puede revertir si el programa genera un error. El programa se puede encontrar en un .dll, .exe, script o en un ensamblado.

Para ilustrar una implementación de .NET de Visual Studio, se le guiará por la implementación del servicio web XML que se implementó anteriormente mediante XCOPY.

  1. Para comenzar, abra un proyecto de servicio web XML existente denominado DemoWebSrv con Visual Studio .NET.

  2. En el menú Archivo, haga clic en Agregar Project y, a continuación, en Nuevo Project. Esto debería abrir el cuadro de diálogo Nueva Project (vea la figura 2).

    Ilustración 2. Cuadro de diálogo Nuevo Project de .NET Visual Studio que muestra las plantillas de implementación disponibles

  3. En tipos de Project, haga clic en la carpeta Proyectos de instalación e implementación y, a continuación, haga doble clic en la plantilla Configuración web Project. El Project de instalación web (WebSetup1) se agrega a la solución existente y se abre el Editor del sistema de archivos.

  4. En el Editor del sistema de archivos, haga clic en la carpeta Aplicación web .

  5. En el menú Acción, seleccione Agregar y, a continuación, haga clic en Project Salida.

  6. En el cuadro Agregar Project grupo de resultados (figura 3), seleccione DemoWebSrv en la lista Project.

    Figura 3. El cuadro de diálogo Agregar Project grupo de resultados se usa para agregar archivos específicos de un proyecto a otro

  7. Seleccione los grupos Salida principal y Archivos de contenido de la lista y haga clic en Aceptar. Esto agrega los archivos de contenido y los ensamblados compilados y sus dependencias al programa compilado Windows Instalador (archivo .msi).

  8. En el Editor del sistema de archivos, haga clic en la carpeta Aplicación web . En la ventana Propiedades , establezca la propiedad VirtualDirectory en DemoWebSrv. Establezca la propiedad DefaultDocumenten Customers.asmx. Windows Instalador usa la información para crear un directorio virtual en el sitio web predeterminado del servidor de destino y establecer su propiedad de documento predeterminada.

  9. En el menú Compilar , haga clic en Compilar WebSetup1. Esto creará un archivo de instalación del instalador de WebSetup1.msi Windows.

  10. Copie el archivo WebSetup1.msi en el equipo servidor web de destino y haga doble clic en el archivo para ejecutar el instalador. Para acceder al servicio web que se acaba de implementar, inicie Internet Explorer y escriba la dirección URL <http://< ComputerName>/DemoWebSrv>.

Novedades de Visual Studio .NET

  • La naturaleza de los ensamblados de .NET hace que XCOPY sea una opción de implementación factible.
  • Windows tecnología installer se ha ampliado para controlar las necesidades de implementación del .NET Framework.
  • Visual Studio herramientas de implementación de .NET se basan en la tecnología del instalador de Windows.
  • Instalador de Visual Studio está integrado en Visual Studio .NET. Las plantillas del instalador se agregan como nuevos proyectos y ofrecen más opciones de configuración.

Resumen

La naturaleza autodescripta de . Los ensamblados creados por NET hacen que sea factible usar XCOPY para implementar y actualizar aplicaciones sencillas. XCOPY puede controlar fácilmente esos escenarios de implementación que requieren instalaciones manuales con pocas dependencias y opciones de configuración. Los servicios web XML y ASP.NET aplicaciones web se prestan especialmente bien a este tipo de implementación, especialmente durante la fase de desarrollo de la aplicación.

Visual Studio .NET también proporciona otras herramientas de implementación, basadas en Windows Instalador, que permiten requisitos de configuración y automatización más flexibles y sólidos. El uso de Visual Studio .NET para crear programas de instalador de Windows permite a los desarrolladores crear programas de instalación sofisticados para las aplicaciones más exigentes.

La opción de implementación que se va a usar se determina en última instancia por el ámbito y la profundidad de los requisitos de configuración de la aplicación.

Acerca del autor

Marty Wasznicky es ingeniero sénior de sistemas con Microsoft Corporation, centrándose en Enterprise integración de aplicaciones, negocio a negocio y comercio electrónico. Tiene más de diez años de experiencia en diseño e implementación de soluciones en el sector de TI, tanto en capacidades corporativas como de consultoría. Es desarrollador de soluciones certificadas de Microsoft, ingeniero de sistemas certificados de Microsoft, administrador de bases de datos certificadas de Microsoft y ingeniero novell certificado. Ha creado numerosos artículos en el diario del programador de Visual Basic y en las revistas Access/VB/SQL Advisor y trabaja actualmente en el distrito sur de California de Microsoft.

Acerca del grupo de comunicaciones informante

Informant Communications Group, Inc. (www.informant.com) es una empresa de medios diversificada centrada en el sector de la tecnología de la información. Especializado en publicaciones de desarrollo de software, conferencias, publicación de catálogos y sitios web, ICG fue fundada en 1990. Con oficinas en el Estados Unidos y el Reino Unido, ICG ha servido como integrador de contenido multimedia y marketing respetado, satisfaciendo el apetito creciente de los profesionales de TI para obtener información técnica de calidad.

Copyright © 2002 Informant Communications Group y Microsoft Corporation

Edición técnica: PDSA, Inc. y KNG Consulting