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:

  1. Ricevere input dell'utente per Name Service
  2. servizio di Installazione
  3. 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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top