Installutil.exe (Herramienta Installer)

La herramienta de instalación es una utilidad de la línea de comandos que le permite instalar y desinstalar recursos de servidor mediante la ejecución de los componentes del instalador en ensamblados específicos. Esta herramienta funciona junto con clases del espacio de nombres System.Configuration.Install.

Esta herramienta se instala automáticamente con Visual Studio. Para ejecutar la herramienta, use el Símbolo del sistema para desarrolladores de Visual Studio o PowerShell de Visual Studio para desarrolladores.

En el símbolo del sistema, escriba lo siguiente:

Sintaxis

installutil [/u[ninstall]] [options] assembly [[options] assembly] ...

Parámetros

Argumento Descripción
assembly Nombre de archivo del ensamblado en el que se ejecutan los componentes del instalador. Omita este parámetro si desea especificar el nombre seguro del ensamblado mediante la opción /AssemblyName.

Opciones

Opción Descripción
/h[elp]

o bien

/?
Muestra las opciones y la sintaxis de los comandos para la herramienta.
/helpassembly

O bien

/?assembly
Muestra opciones adicionales reconocidas por instaladores individuales dentro del ensamblado especificado, junto con la sintaxis y las opciones de los comandos de InstallUtil.exe. Esta opción agrega el texto devuelto por la propiedad Installer.HelpText de cada componente del instalador al texto de ayuda de InstallUtil.exe. Por ejemplo, si ServiceProcessInstaller.Account es User, las opciones /username y /password estarán disponibles.
/AssemblyName "assemblyName

,Version=major.minor.build.revision

,Culture=locale

,PublicKeyToken=publicKeyToken"
Especifica el nombre seguro de un ensamblado, que debe registrarse en la memoria caché global de ensamblados. El nombre del ensamblado debe ser completo e incluir la versión, la referencia cultural y el token de clave pública. El nombre completo debe ir entre comillas.

Por ejemplo, "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0" es un nombre de ensamblado completo.
/InstallStateDir=[directoryName] Especifica el directorio del archivo .InstallState que contiene los datos usados para desinstalar el ensamblado. El directorio predeterminado es el que contiene el ensamblado.
/LogFile=[filename] Especifica el nombre del archivo de registro donde se graba el progreso de la instalación. De forma predeterminada, si se omite la opción /LogFile, se crea un archivo de registro denominado assemblyname.InstallLog. Si se omite filename, no se genera ningún archivo de registro.
/LogToConsole={true|false} Si es true, muestra el resultado en la consola. Si es false (valor predeterminado), el resultado no se muestra en la consola.
/ShowCallStack Envía la pila de llamadas al archivo de registro si se produce una excepción en cualquier paso de la instalación.
/u[ninstall] Desinstala los ensamblados especificados. A diferencia de las demás opciones, /u se aplica a todos los ensamblados con independencia del lugar donde aparezca la opción en la línea de comandos.

Opciones adicionales del instalador

Los instaladores individuales utilizados en un ensamblado pueden reconocer opciones adicionales a las enumeradas en la sección Opciones. Para obtener información sobre estas opciones, ejecute InstallUtil.exe con las rutas de acceso de los ensamblados en la línea de comandos junto con la opción /? o /help. Para especificar estas opciones, debe incluirlas en la línea de comandos junto con las opciones reconocidas por InstallUtil.exe.

Nota

Texto de ayuda en las opciones admitidas por los componentes individuales del instalador devuelto por la propiedad Installer.HelpText. Es posible obtener acceso mediante programación a las opciones individuales especificadas en la línea de comandos desde la propiedad Installer.Context.

Todas las opciones y parámetros de la línea de comandos se escriben en el archivo de registro de la instalación. Sin embargo, si utiliza el parámetro /Password, que reconocen algunos componentes del instalador, la información de la contraseña se reemplazará por ocho asteriscos (*) y no aparecerá en el archivo de registro.

Importante

En algunos casos, los parámetros pasados al instalador pueden incluir información confidencial o de identificación personal que, de forma predeterminada, se escribe en un archivo de registro de texto sin formato. Para impedir este comportamiento, puede suprimir el archivo de registro; para ello, especifique /LogFile= (sin el argumento filename) después de Installutil.exe en la línea de comandos.

Comentarios

Las aplicaciones de .NET Framework constan de archivos de programa tradicionales y recursos asociados, como colas de mensajes, registros de eventos y contadores de rendimiento que se deben crear al implementar la aplicación. Se pueden utilizar componentes del instalador de un ensamblado para crear estos recursos cuando se instala la aplicación y para quitarlos cuando la aplicación se desinstale. Installutil.exe detecta y ejecuta estos componentes del instalador.

Se pueden especificar varios ensamblados en la misma línea de comandos. Las opciones situadas delante de un nombre de ensamblado se aplican a la instalación de dicho ensamblado. Salvo para /u y /AssemblyName, las opciones son acumulativas pero reemplazables. Es decir, las opciones especificadas para un ensamblado se aplican a todos los ensamblados posteriores salvo que la opción se especifique con un nuevo valor.

Si se ejecuta Installutil.exe con un ensamblado sin especificar opciones, la herramienta coloca los tres archivos siguientes en el directorio del ensamblado:

  • InstallUtil.InstallLog: contiene una descripción general del progreso de la instalación.

  • assemblyname.InstallLog: contiene información específica para la fase de confirmación del proceso de la instalación. Para obtener más información sobre la fase de confirmación, vea el método Commit.

  • assemblyname.InstallState: contiene los datos usados para desinstalar el ensamblado.

Installutil.exe usa la reflexión para inspeccionar los ensamblados especificados y buscar todos los tipos Installer que tengan el atributo System.ComponentModel.RunInstallerAttribute establecido en true. A continuación, la herramienta ejecuta el método Installer.Install o Installer.Uninstall en cada una de las instancias del tipo Installer. Installutil.exe realiza la instalación de forma transaccional; es decir, si se produce un error en la instalación de uno de los ensamblados, se revierten las instalaciones de los demás ensamblados. El proceso de desinstalación no es transaccional.

Installutil.exe no puede instalar ni desinstalar los ensamblados con firma retrasada, pero puede instalar o desinstalar los ensamblados con nombre seguro.

A partir de la versión 2.0 de .NET Framework, la versión de 32 bits de Common Language Runtime (CLR) se distribuye solo con la versión de 32 bits de la herramienta de instalación, aunque la versión de 64 bits de CLR se distribuye tanto con la versión de 32 bits como con la versión de 64 bits de dicha herramienta. Cuando utilice el CLR de 64 bits, emplee la herramienta de instalación de 32 bits para instalar los ensamblados de 32 bits y la herramienta de instalación de 64 bits para instalar los ensamblados de 64 bits y del Lenguaje intermedio de Microsoft (MSIL). Ambas versiones de la herramienta de instalación se comportan de la misma manera.

No se puede utilizar Installutil.exe para implementar un servicio de Windows creado mediante C++, ya que Installutil.exe no reconoce el código nativo incrustado generado por el compilador de C++. Si intenta implementar un servicio de Windows de C++ con Installutil.exe, se producirá una excepción como BadImageFormatException. Para trabajar con este escenario, mueva el código de servicio a un módulo de C++ y, a continuación, escriba el objeto del instalador en C# o Visual Basic.

Ejemplos

El comando siguiente muestra una descripción de la sintaxis y las opciones de comando para InstallUtil.exe.

installutil /?

El comando siguiente muestra una descripción de la sintaxis y las opciones de comando para InstallUtil.exe. También muestra una descripción y la lista de opciones admitidas por los componentes del instalador en myAssembly.exe si el texto de ayuda se ha asignado a la propiedad Installer.HelpText del instalador.

installutil /? myAssembly.exe

El comando siguiente ejecuta los componentes del instalador en el ensamblado myAssembly.exe.

installutil myAssembly.exe

El siguiente comando ejecuta los componentes del instalador en un ensamblado mediante el modificador /AssemblyName y un nombre completo.

installutil /AssemblyName "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0"

El comando siguiente ejecuta los componentes del instalador en un ensamblado especificado por nombre de archivo y en un ensamblado especificado por nombre seguro. Tenga en cuenta que todos los ensamblados especificados por nombre de archivo deben preceder a los especificados por nombre seguro en la línea de comandos, ya que la opción /AssemblyName no se puede invalidar.

installutil myAssembly.exe /AssemblyName "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0"

El comando siguiente ejecuta los componentes del desinstalador en el ensamblado myAssembly.exe.

installutil /u myAssembly.exe

El comando siguiente ejecuta los componentes del desinstalador en los ensamblados myAssembly1.exe y myAssembly2.exe.

installutil myAssembly1.exe /u myAssembly2.exe

Dado que la posición de la opción /u en la línea de comandos no es importante, esta es equivalente al siguiente comando.

installutil /u myAssembly1.exe myAssembly2.exe

El comando siguiente ejecuta los instaladores en el ensamblado myAssembly.exe y especifica la información del progreso que se escribirá en myLog.InstallLog.

installutil /LogFile=myLog.InstallLog myAssembly.exe

El comando siguiente ejecuta los instaladores en el ensamblado myAssembly.exe, especifica que la información de progreso debe escribirse en myLog.InstallLog y usa la opción /reg personalizada de los instaladores para especificar las actualizaciones que se deben realizar en el Registro del sistema.

installutil /LogFile=myLog.InstallLog /reg=true myAssembly.exe

El comando siguiente ejecuta los instaladores en el ensamblado myAssembly.exe, usa la opción /email personalizada del instalador para especificar la dirección de correo electrónico del usuario e impide que los resultados se envíen al archivo de registro.

installutil /LogFile= /email=admin@mycompany.com myAssembly.exe

El comando siguiente escribe el progreso de instalación de myAssembly.exe en myLog.InstallLog y el progreso de myTestAssembly.exe en myTestLog.InstallLog.

installutil /LogFile=myLog.InstallLog myAssembly.exe /LogFile=myTestLog.InstallLog myTestAssembly.exe

Vea también