My Blog

Multiple service instance

by lupok on martedì 17 dicembre 2013 16:02

Per creare un servizio in grado di supportare l'installazione multipla e' sufficiente modificare il nome del servizio ad ogni installazione, quindi per semplicita' si puo' utilizzare un "Application Configuration File" in cui viene specificato il nome del servizio:

 

xml version="1.0" encoding="utf-8" ?>
<configuration>
   <appSettings>
      <add key="ServiceName" value="Service Instance 1"/>
   appSettings>
configuration>

Per fare in modo che il nome del servizio venga definito dal file di configurazione e' necessario scrivere qualche riga di codice all'interno della classe di installazione:

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Configuration.Install;
using System.Linq;
using System.Reflection;
using System.ServiceProcess;
 
namespace MultipleInstanceService
{
   [RunInstaller(true)]
   public partial class ProjectInstaller : System.Configuration.Install.Installer
   {
      public ProjectInstaller()
      {
 
         InitializeComponent();
 
         serviceInstaller1.ServiceName = GetConfigurationValue("ServiceName");
      }
 
      private string GetConfigurationValue(string key)
      {
         Assembly service = Assembly.GetAssembly(typeof(ProjectInstaller));
         Configuration config = ConfigurationManager.OpenExeConfiguration(service.Location);
         if (config.AppSettings.Settings[key] != null)
         {
            return config.AppSettings.Settings[key].Value;
         }
         else
         {
            throw new IndexOutOfRangeException("Requested key no found:" + key);
         }
      }
   }
}

 

A questo punto possiamo creare istanze multiple semplicenmente modificando il nome del servizio nel file di configurazione:

 

C:\Windows\system32>installutil.exe 
"C:\Works\MultipleInstanceService\build\MultipleInstanceService.exe"
MultipleInstanceService.zip

 

Blogs Parent Separator My Blog
Author
lupok

My Blog

Tags