2009-03-18 7 views

Répondre

7

Je suis allé sur cette route avant et malheureusement vous devrez créer le pool d'applications manuellement ou écrire une action personnalisée pour gérer cela pour vous.

suite à la question de Grzenio dans les commentaires ci-dessous:

« Pourriez-vous me donner un indice où commencer à chercher les classes code/helper Et gardez-vous de votre projet un projet d'installation Web, ou tout simplement utiliser le projet d'installation d'application standard? "

J'ai ajouté un nouveau projet appelé InstallHelper à la solution contenant le projet d'installation. Dans ce projet, j'ai créé une classe appelée InstallActions qui dérive de:

System.Configuration.Install.Installer (MSDN).

Il existe quatre méthodes que vous pouvez remplacer sur la classe de base Installer pour vous permettre de spécifier des actions personnalisées selon que vous êtes dans les phases Install, Commit, Uninstall ou Rollback lorsque le programme d'installation est en cours d'exécution.

J'ai également ajouté un certain nombre de boîtes de dialogue dans l'interface utilisateur du projet d'installation. L'entrée et l'état capturés à partir de ces dialogues sont transmis à votre action d'installation personnalisée via un dictionnaire. i.e. .:

using System.Collections.Specialized; 
using System.ComponentModel; 
using System.Configuration.Install; 
using System.Windows.Forms; 

namespace InstallHelper 
{ 
    [RunInstaller(true)] 
    public partial class PostInstallActions : Installer 
    { 
    public override void Install(IDictionary state) 
    { 
     base.Install(state); 
     // Do my custom install actions 
    } 

    public override void Commit(IDictionary state) 
    { 
     base.Commit(state); 
     // Do my custom commit actions 
    } 

    public override void Uninstall(IDictionary state) 
    { 
     base.Uninstall(state); 
     // Do my custom uninstall actions 
    } 
    public override void Rollback(IDictionary state) 
    { 
     base.Uninstall(state); 
     // Do my custom rollback actions 
    } 
    } 
} 

Pour ajouter votre projet d'action personnalisé au projet d'installation, ouvrez le spectateur Actions personnalisées/éditeur et spécifiez la sortie du projet InstallHelper.

Voilà les bases et devrait vous aider à démarrer. Le projet d'installation Web prend également en charge les actions personnalisées et les boîtes de dialogue de saisie utilisateur supplémentaires. Vous pouvez donc réutiliser votre projet existant en plus d'une action personnalisée.

+0

J'utilise des actions personnalisées pour faire cela dans .net 2.0 –

+0

Bravo pour la réponse. Pourriez-vous me donner un indice où commencer à chercher les classes de code/assistant? Et gardez-vous votre projet un projet d'installation Web, ou utilisez-vous simplement le projet d'installation d'application standard? – Grzenio

+0

J'ai d'abord regardé le projet d'installation Web mais j'ai choisi d'utiliser le projet d'installation standard à la place parce que mes exigences comprenaient également l'installation d'un service Windows et la création du site Web. – Kev

10

Découvrez ce post http://forums.iis.net/t/1061734.aspx, il donnera une idée approximative de Microsoft.Web.Administration dll.

Je n'ai pas étudié tout le concept mais j'ai pensé comment créer un nouveau pool et comment l'attacher avec un nouveau site web/répertoire virtuel.

Création d'un pool d'applications

Microsoft.Web.Administration.ServerManager manager = new Microsoft.Web.Administration.ServerManager(); 
manager.ApplicationPools.Add("NewApplicationPool"); 
manager.CommitChanges(); 

Fixation avec le répertoire virtuel existant

Microsoft.Web.Administration.ServerManager manager = new Microsoft.Web.Administration.ServerManager(); 
Site defaultSite = manager.Sites["Default Web Site"]; 

// defaultSite.Applications will give you the list of 'this' web site reference and all 
// virtual directories inside it -- 0 index is web site itself. 

Microsoft.Web.Administration.Application oVDir = defaultSite.Applications["/myApp"];    
oVDir.ApplicationPoolName = "NewApplicationPool"; 
manager.CommitChanges(); 

Cette façon, vous pouvez assigner pool d'applications à votre nouveau site Web en utilisant les actions personnalisées, redéfinissant la méthode de validation de la classe d'installation.

Si vous vous trouvez toujours en difficulté, faites le moi savoir et je vais essayer d'envoyer le code.

Cordialement Faiyaz faiyazkhan @ hotmail.com

+2

L'utilisation de Microsoft.Web.Administration est uniquement possible sur un ordinateur Windows Server 2008 (c'est-à-dire IIS7). Pour l'administration par programme d'IIS 6.0 sur les ordinateurs Windows Server 2003, vous pouvez essayer WMI à la place: http://msdn.microsoft.com/en-us/library/ms525309%28v=VS.90%29.aspx. Vous pouvez également essayer System.DirectoryServices: http://msdn.microsoft.com/en-us/library/ms525791%28v=VS.90%29.aspx – rohancragg