2009-07-01 22 views
13

Objetivo: En apoyo de un servicio de Windows que puede tener múltiples instancias en una sola máquina, utilice un proyecto de instalación para crear un MSI capaz de:Especificar nombre del servicio de Windows en la instalación con la instalación de proyectos

  1. Recepción de la entrada del usuario para el servicio de nombres
  2. servicio de instalacion de
  3. Serializar nombre de servicio de 1 (de modo que el nombre propio se puede utilizar en la explotación forestal y desinstalación)

Mi esperanza inicial era de conjunto de servicios Nombre en App.config (y luego recupérelo durante la desinstalación al instanciar el ServiceInstaller. Esto parece haber sido ingenuo, porque no es accesible durante la instalación.

Si MyInstaller extiende el instalador, puede llamar a base.Install(); sin embargo, mis intentos de escribir en app.config (dentro de MyInstaller.Install() y después de base.Install()) no son efectivos.

Por lo tanto, aunque el servicio se puede instalar con un nombre de servicio personalizado, ese nombre no se serializa y el instalador se disgusta más con la desinstalación.

¿Cómo se debe hacer esto?

Respuesta

9

Puede especificar parámetros para las acciones del instalador, por lo tanto, recopile el nombre del servicio y páselo como parámetro a la acción. Luego, en la clase Installer, puede anular Install() y acceder a través de base.Context.Parameters. Así es como obtienes el valor. Habiendo obtenido ese valor y lo usó, lo puso en el parámetro stateSaverIDictionary para que, si anula Uninstall(), puede averiguar qué valor se utilizó en la instalación.

+0

oculto en el sitio plano! gracias Neil. –

+2

¿podría proporcionar un código de ejemplo? –

+2

¡Soy segundo Lucas! :-) – Junto

Cuestiones relacionadas