Specificare di Windows Name Service a installare con Progetto di installazione
-
21-08-2019 - |
Domanda
Obiettivo: A sostegno di un servizio Windows che può avere più istanze su una singola macchina, utilizzare un progetto di installazione per creare un MSI in grado di:
- Ricevere input dell'utente per Name Service
- servizio di Installazione
- serializzazione di Servizio Nome da 1 (in modo che il nome proprio può essere utilizzato in registrazione e disinstallare)
La mia speranza iniziale era quello di impostare nome del servizio in App.config (e poi recuperarlo durante la disinstallazione su istanza della ServiceInstaller. Questo sembra essere stato ingenuo, perché non è accessibile durante l'installazione.
Se MyInstaller estende Installer, si può chiamare base.Install (); tuttavia, i miei tentativi di scrivere a app.config (entro MyInstaller.Install () e dopo base.Install ()) sono INEFFICACE.
Così, mentre il servizio può essere installato con un nome di servizio personalizzato, quel nome non è serializzato e il programma di installazione è più dispiaciuto su di disinstallazione.
Come si dovrebbe fare?
Soluzione
È possibile specificare i parametri dell'installatore azioni, in modo da raccogliere il nome del servizio, e passarlo come parametro per l'azione. Poi, nel Installer
di classe, è possibile ignorare Install()
e accedervi tramite base.Context.Parameters
. Ecco come si ottiene il valore. Dopo aver ottenuto tale valore e lo ha usato, lo metti nel parametro stateSaver
IDictionary
in modo che se si ignora Uninstall()
si può scoprire quale valore è stato utilizzato su installazione.