Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una aplicación instrumentada debe pasar por una fase de registro, en la que su esquema se puede descubrir y registrar en el repositorio WMI. Se requiere una publicación de esquema para cada ensamblado. Todo ensamblado que declare tipos de instrumental (eventos o instancias) debe publicar su esquema en WMI. Para ello se utilizan los mecanismos del instalador estándar de .NET Framework.
En primer lugar, hay que definir el instalador para el proyecto. Si el proyecto no necesita un instalador para ningún otro fin, puede usar la clase ayudante predeterminada de instalador de administración proporcionada en System.Management.Instrumentation y derivarla en el código:
[System.ComponentModel.RunInstaller(true)]
public class MyInstaller : DefaultManagementProjectInstaller {}
De esta manera, el sistema puede saber que la aplicación tiene un paso de instalación y que desea ejecutarlo. Si el proyecto contiene otros pasos de instalación que debe seguir y ya hay un instalador definido para el proyecto, debe utilizar la clase ManagementInstaller proporcionada en System.Management.Instrumentation. Por ejemplo, agregaría el código siguiente al constructor del instalador de su proyecto:
ManagementInstaller managementInstaller = new ManagementInstaller();
Installers.Add(managementInstaller);
Para llamar a este paso de instalación, hay varias opciones:
Si coloca su aplicación en un paquete de instalación de MSI, asegúrese de que la opción de ejecutar instaladores de .NET está activada y de que el programa de instalación de MSI los ejecutará.
Ejecute la utilidad installutil.exe disponible en .NET Framework SDK en el ensamblado instrumentado.
c:> installutil <yourassemblyname>Puede ejecutar el instalador desde su aplicación, para lo que debe agregar lo siguiente justo al principio de la función Main():
string[] installArgs = new String[] { "/logfile=", "/LogToConsole=false", "/ShowCallStack", typeof(App).Assembly.Location, }; System.Configuration.Install.ManagedInstallerClass.InstallHelper(installArgs);Nota No obstante, con esta opción el esquema de administración de esta aplicación sólo estará disponible para los consumidores después de ejecutar la aplicación por primera vez, no cuando se instala.
Independientemente de la opción que elija para llamar al registro del esquema, dicho registro sólo será correcto si el usuario que realiza la llamada es miembro del grupo de administradores locales. Normalmente, éste es el caso cuando se instala una aplicación, pero tenga en cuenta que si no desea requerir un paso de instalación para la aplicación, será necesario que un administrador local la ejecute como mínimo una vez para que el esquema de administración se registre y la aplicación pueda proporcionar datos y eventos de administración.
Por comodidad para los programadores en el momento del diseño, el esquema se publicará automáticamente la primera vez que una aplicación genere un evento o publique una instancia. De esta manera se evita tener que declarar un instalador de proyecto y ejecutar InstallUtil durante la rápida creación de un prototipo de la aplicación. También en este caso, la publicación automática del esquema sólo es posible si la persona que ejecuta la aplicación es un miembro del grupo de administradores locales. Es importante resaltar que no se debería confiar en este comportamiento cuando la aplicación ya esté preparada para ser implementada. El esquema de un ensamblado instrumentado debería publicarse en WMI en el momento de la instalación mediante uno de los mecanismos descritos anteriormente que usan un instalador.
El esquema de clases de evento (o de instancia) reside en el ensamblado y se registra en el repositorio de WMI durante la instalación.
Un ensamblado de .NET puede tener información de versiones. No hay una asignación directa entre la versión del ensamblado y el esquema WMI registrado en el repositorio WMI.
La práctica recomendada para evitar la incompatibilidad de versiones es:
- En el caso de cambios en el esquema, ejecute la utilidad InstallUtil.exe para reinstalar el ensamblado.
- Instalar otra vez los ensamblados de todas las clases derivadas de la clase modificada (si hay alguno).
- Compilar de nuevo las aplicaciones cliente.
No obstante, hay casos en los que las aplicaciones cliente no se pueden volver a compilar. En los dos escenarios siguientes se muestra este caso. Ambos corresponden a esquemas de eventos:
Escenario 1: no se ha cambiado el esquema de clases de evento.
Acción: en el momento de volver a compilar y reinstalar, asegúrese de que tanto la versión principal del ensamblado que contiene la definición de la clase como la secundaria tienen los valores originales.
Escenario 2: se ha cambiado el esquema de eventos. Más concretamente, el esquema de clases de evento se ha modificado al agregar propiedades, métodos o ambos; no se ha quitado ninguna de las propiedades o métodos definidos anteriormente.
Acción: en este caso, se recomienda encarecidamente mover el instrumental de la aplicación a otro espacio de nombres de WMI.
Si el esquema registrado actualmente resulta dañado por cualquier motivo, podría haber casos en los que al volver a ejecutar installutil.exe no detecte la necesidad de volver a registrar el esquema original. En este caso, es posible obligar al instalador a volver a instalar el esquema mediante la utilización del modificador /f o /force:
installutil.exe /f <yourassemblyname>
Anular el registro del esquema
Los instaladores admiten generalmente un modificador de desinstalación que se utiliza normalmente de la forma siguiente:
{0><}0{>installutil.exe /u <yourassemblyname><0}
donde <yourassemblyname> es el ensamblado que contiene la definición del esquema registrado anteriormente.
Sin embargo, en esta versión la clase ManagementInstaller no realiza ninguna operación en el proceso de desinstalación, en particular no elimina el registro del esquema. La razón es que el mismo esquema lo puede utilizar más de un proveedor WMI, y no se está aplicando ningún mecanismo que identifique si un esquema concreto lo está utilizando otra entidad y puede ser retirado de forma segura.
Vea también
Instrumentar aplicaciones de .NET Framework con System.Management | Clases y asignación en CLI y WMI | Exponer eventos de administración | Exponer datos de administración | Herencia