Problemi di utilizzo di una classe installata in una configurazione Web per un sito Web
-
28-10-2019 - |
Domanda
Sto cercando di creare una configurazione Web per il mio sito Web e voglio utilizzare una classe di installatore per fare alcune cose personalizzate. Sto usando VS 2010 e il sito Web e l'installatore sono .NET 3.5.
Ho aggiunto un riferimento all'output del progetto di classe di installazione in Install
sezione sotto Custom Actions
:
Ho anche impostato /targetdir="[TARGETDIR]/"
sul CustomActionData
per questa azione.
Il InstallScript
Il progetto è una libreria di classe standard (DLL).
C'è una classe pubblica che eredita Installer
classe. Sostituisce il metodo di installazione come ho visto in diversi esempi online:
using System.Collections;
using System.Windows.Forms;
namespace InstallScript
{
public class MyWebInstaller : System.Configuration.Install.Installer
{
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
var targetDir = Context.Parameters["targetdir"];
if(targetDir==null) targetDir = "No TARGETDIR!";
MessageBox.Show("TARGETDIR:\t" + targetDir);
}
}
}
Penserei che dovrebbe essere mostrata una casella di messaggio qui durante l'installazione, ma sembra che non venga mai chiamato. Nessun errore è mostrato neanche. L'impostazione viene eseguita come se questo codice non fosse mai stato chiamato.
Qualcuno ha idea di cosa c'è che non va?
Soluzione
Ok, ho scoperto cosa mancava.
È necessario specificare la classe con l'attributo della classe RunInstaller(true)
per il prelievo di impostare ed eseguire effettivamente il codice.
Quindi la classe deve essere dichiarata così:
[System.ComponentModel.RunInstaller(true)]
public class MyWebInstaller : System.Configuration.Install.Installer
{
...