2009-03-18 14 views

Respuesta

7

He estado en este camino antes y desafortunadamente tendrá que crear el grupo de aplicaciones manualmente o escribir una Acción personalizada para administrar esto por usted.

tras la pregunta de Grzenio en los comentarios a continuación:?

"¿Me podría dar una pista donde comenzar a buscar para las clases de código/helper ¿Y mantener su proyecto un proyecto de instalación Web, o simplemente utilizar el proyecto de instalación de la aplicación estándar? "

He añadido un nuevo proyecto llamado InstallHelper a la solución que contiene el proyecto de instalación. En ese proyecto creé una clase llamada InstallActions que deriva de:

System.Configuration.Install.Installer (MSDN).

Hay cuatro métodos que puede anular en la clase base Installer para permitirle especificar acciones personalizadas dependiendo de si está en las fases Instalar, Comprometer, Desinstalar o Revertir cuando el instalador se está ejecutando.

También agregué un número de diálogos de cuadros de texto a la interfaz de usuario del proyecto de configuración. La entrada y el estado capturados de estos diálogos se pasan a su acción de instalación personalizada a través de un diccionario. es decir .:

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 
    } 
    } 
} 

Para añadir su proyecto de acción personalizado para el proyecto de instalación, abra el encargo acciones visor/editor y especifique la salida del proyecto InstallHelper.

Eso es lo básico y debería comenzar. El proyecto de configuración web también admite acciones personalizadas y cuadros de diálogo de entrada de usuario adicionales, por lo que es posible que desee reutilizar su proyecto existente, además de una acción personalizada.

+0

Uso acciones personalizadas para hacer esto en .net 2.0 –

+0

¡Salud para la respuesta. ¿Podría darme una pista de dónde empezar a buscar las clases de código/ayudante? ¿Y mantiene su proyecto como un Proyecto de configuración web, o simplemente usa el proyecto de configuración de aplicaciones estándar? – Grzenio

+0

Inicialmente miré el Proyecto de configuración web pero opté por utilizar el proyecto de configuración estándar porque mis requisitos también incluían tener que instalar un servicio de Windows y crear el sitio web. – Kev

10

Echa un vistazo a esta publicación http://forums.iis.net/t/1061734.aspx, dará alguna idea aproximada sobre Microsoft.Web.Administration dll.

No he estudiado todo el concepto, pero me imaginé cómo crear un nuevo grupo y cómo conectarlo con un nuevo sitio web/directorio virtual.

Creación del grupo de aplicaciones

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

Colocación con el directorio virtual existente

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(); 

De esta manera se puede asignar grupo de aplicaciones para su nuevo sitio web utilizando las acciones personalizadas, reemplazando el método comprometerse de clase instalador.

Si todavía te encuentras luchando, por favor házmelo saber e intentaré enviar el código.

Saludos Faiyaz faiyazkhan @ hotmail.com

+2

El uso de Microsoft.Web.Administration solo es posible en un equipo con Windows Server 2008 (es decir, IIS7). Para la administración programática de IIS 6.0 en máquinas con Windows Server 2003, puede probar WMI: http://msdn.microsoft.com/en-us/library/ms525309%28v=VS.90%29.aspx. También puede probar System.DirectoryServices: http://msdn.microsoft.com/en-us/library/ms525791%28v=VS.90%29.aspx – rohancragg

Cuestiones relacionadas