Trucos: Creación de programas de instalación para ASP.NET con VS 2005

Escenario

Habéis echo una aplicación web ASP.NET con Visual Studio 2005, y queréis permitir a vuestros clientes que puedan instalar y desplegarla en sus servidores a través de un programa de instalación.

Concretamente, quereis crear un programa de instalación estándar de Windows que cree y configure la aplicación en el IIS, que copie todos los archivos necesarios para la aplicación en el servidor, y comprobar que ASP.NET 2.0 está correctamente configurado para que se ejecute la aplicación. También queréis que el programa de instalación le pregunte al cliente por la localización de la base de datos que usará la aplicación, y que actualize automáticamente el archivo web.config con las cadenas de conexión a la base de datos que el cliente proponga.

Una solución a considerar es usar el tipo de proyecto "Web Setup Project" que viene con Visual Studio. Este tipo de proyectos pueden usarse para encadenar los resultados de la compilación tanto de proyectos de aplicaciones web de Vs 2005 como para sitios web (cuando usamos Web Deployment Projects), para crear programas de instalación de windows encapsulados. En la siguiente guía mostramos cómo crearlos y usarlos paso a paso.

1) Crear una aplicación web con VS 2005.

Lo primero que debemos hacer es abrir una instancia nueva de Vs 2005 y crear un proyecto de aplicación web (Web Application Project) (En Archivo/New Project/Aplicación Web ASP.NET). Para este ejemplo tendremos dos páginas en el proyecto:

Añadiremos una etiqueta (label) a la página Default.aspx y un manejador para el evento Page_Load en el code-behind para mostrar la fecha y hora actual en cada petición. Cuando pulsemos F5 para compilar y ejecutar la aplicación, el proyecto se compilará y ejecutará como habíamos esperado (y por defecto usaremos el servidor web de pruebas que viene en Visual Studio):

2) Añadir un proyecto de Instalación Web a la solución.

Ahora que tenemos una aplicación web ASP.NET, añadiremos un proyecto de instalación web (Web Setup Project) a la solución. Seleccionamos ArchivoAñadirNuevo Projecto para añadirlo a la solución:

Fijaos que el "Proyecto de instalación Web" se muestra en "Otro tipo de proyecots Setup and Deployment". Le ponemos el nombre que queramos y le damos a OK. Se mostrará como un proyecto separado en el explorador de soluciones.

Lo siguiente es configurar el proyecto de instalación para que coja los asemblies precompilados (directorio bin) + los archivos .aspx, .config, etc de nuestra aplicación web para usarlas como entradas en nuestro proyecto de instalación. Para hacer esto, hacemos clic con el botón derecho en proyecto de instalación web en el explorador de soluciones y elejimos "AñadirProyecto de salida":

Aparecerá un cuadro de diálogo que nos permitirá seleccionar un proyecto de la solución, y qué contenido del proyecto queremos añadir al paquete de instalación:

Para los proyectos de aplicación web es muy importante que seleccionemos tanto "Primary Output" (que son los assembiles compilados del directorio bin) como los "Content files" (que son los archivos .aspx)

Por defecto, el proyeto de instalación web copiará estos elementos a la raíz de la aplicación web que generará el proyecto de instalación web. Podemos ver que está configurado de esta manera abriendo la vista de "Sistema de archivos" del proyecto de instalación web (clic derecho en la raíz del proyecto de instalación y seleccionar VerSistema de Archivos:

Esto no es lo que queremos que pase, ya que lo que realmente queremos es que los assemblies ( indicados en el nodo Primary Output) sean copiados al directorio bin de la aplicación (de otra forma ASP.NET no será capáz de encontrarlos en tiempo de ejecución). Para arreglarlo, arrastramos/soltamos el nodo "Primary Output de MyApplication" en el directorio bin. Una vez echo esto seremos capaces de hacer clic en el nodo "Directorio de la aplicación Web" en la parte izquierda y ver esto:

Y haciendo clic en el directorio "bin" veremos esto:

Ahora tenemos un proyecto de instalación básico creado y configurado para nuestra aplicación web ASP.NET. El siguiente paso es compilarla y ejecutarla.

3) Compilar y ejecutar el proyecto de instalación.

Para compilar el proyecto de instalación web, podemos hacer clic con el botón derecho en el nodo del proyecto de instalación web en el explorador de soluciones y elegir la opcion "Build":

Si habrimos la ventana de output de VS (VerResultados), veremos los resultados de la compilación:

El projecto "MyApplicationSetup" ha creado un instalador de windows, ha comprimido y ha empaquetado el contenido de nuestra aplicación web ASP.NET en el archivo MyApplicationSetup.msi. (Nota: en las propiedades del proyecto de instalación podéis elegir el algoritmo de compresión a usar, podemos decirle que lo optimize en tamaño o en velocidad).

Muy importante: Debido a que los proyectos de instalación tardan un rato en compilarse, no se marcan por defecto para que se compilen como parte de la solución. Esto significa que tenemos que hacer clic derecho en ellos para compilarlos explícitamente. Hay que tener cuidado cuando hacemos y provamos cambios - de otra forma estaremos ejecutando la versión previa de la versión compilada y no la última con el código más actualizado.

Para probarlo, podemos hacer clic con el botón derecho en el proyecto de instalación en el explorador de soluciones y seleccionar la opción "Install" para instalarlo. (o podemos lanzarlo fuera de VS ejecutándolo):

Con esto lanzaremos el instalador estándar de Windows que guiará al usuario para instalarlo en el IIS:

Los proyectos de instalación web de VS 2005 nos permiten seleccionar el sitio donde instalar la aplicación si hay varios sitios configurados en el IIS (Esto no estaba soportado en la versión 2003 de Visual Studio). También podemos especificar un directorio virtual para instalar la aplicación (por ejemplo: http://www.myserver.com/myapppath), o podemos dejar ese campo en blanco para instalar la aplicación en la raíz de nuestro sitio (por ejemplo http://www.myserver.com).

Una vez que el instalador termina, la aplicación se habrá copiado al disco y se habrá registrado en el IIS. Ahora podemos ejecutar la aplicación usando la dirección http que le dijimos en la instalación:

Una vez instalada, la aplicación se mostrará en la utilidad de "Añadir o quitar programas" del Panel de Contol de Windows:

También podemos desinstalar la aplicación desde esta utilidad, o (en tiempo de desarrollo) haciendo clic con el botón derecho en el proyecto de instalación en el explorador de soluciones y seleccionando la opción de "Desinstalar". Esto borrará todos los archivos instalados del disco.

4) Actualizar la interfaz del Wizard del proyecto de instalación web.

Por defecto, el instalador que se crea por un proyecto de instalación web tiene por defecto algunas instrucción en cadenas y en imágenes:

Podemos cambiar esto y personalizar las pantallas haciendo clic con el botón derecho en el nodo del proyecto de instalación web en el explorador de soluciones seleccionando "View User Interface" :

Esto nos mostrará una pantalla que nos muestra la lista de pantallas que se mostrarán durante el proceso de instalación:

Desafortunadamente no hay un diseñador de forms que podamos usar para sobreescribir las pantallas de arriba. Sin embargo, podemos seleccionar una pantalla, e irnos a las propiedades para personalizar el texto y cambiar los gráficos que se usarán en la pantalla:

También podemos crear nuevas pantallas y añadirlas al wizard de instalación. Más tarde en este tutorial usaremos esta característica para crear una pantalla para obtener la cadena de conexión y usarla para automatizar la configuración de nuestro archivo web.config para poder usar la base de datos apropiada.

5) Añadir acciones personalizadas al Proyecto de Instalación Web de VS 2005

Los proyectos de instalación web tienen soporte para configurar ciertas cosas comunes de instalación. Entre otras existe un editor para añadir/modificar entradas del registro (seleccionando ViewRegister to configure), cambiar asociaciones de archivos (ViewFile Types), y para validar prerrequisitos necesarios para la instalación (automáticamente comprueba que el .NET Framework 2.0 redistributable esté instalado). Los proyectos de instalación también nos permiten configurar unas cuantas opciones de IIS declarativamente (clic en el "directorio de la aplicación web" en la vista de File System y miremos las propiedades para ver esto):

Pero para instalaciones que no sean triviales, lo más normal es poder ser capaz de ejecutar codigo personalizado durante la instalación para personalizar cosas. Las buenas noticias es que los proyectos de instalación web soportan una cosa llamada "Custom Actions" (Acciones personalizadas) - que es el código que escribiremos que se ejecutará tanto en la instalación como en la desinstalación.

Para añadir una acción personalizada lo primero que debemos hacer es añadir un nuevo proyecto de librería en la solución (ArchivoAñadirNuevo proyectoLibrería de clases).

Luego tenemos que añadir unas referencias a algunos assemblies: System.Configuration.Install.dll, System.Configuration.dll, System.Diagnostics.dll y System.Web.dll. Luego creamos una nueva clase para nuestra acción personalizada y debe derivar de la clase "System.Configuration.Install.Installer" :

using System;
using 
System.Configuration.Install;
using 
System.ComponentModel; namespace MyCustomAction
{
    [RunInstaller(
true)]
    
public class ScottSetupAction : Installer
    {
        
public override void Install(System.Collections.IDictionary stateSaver)
        {
            
base.Install(stateSaver);            // Todo: Write Your Custom Install Logic Here 
        
}
    }
}
Hay que fijarse en que el atributo "RunInstaller(true)" debe estar encima del nombre de la clase. Esto es importante y es necesario (y fácil de olvidar). Necesitamos añadir un using al namespace System.ComponentModel  para ello.

Lo siguiente que necesitaremos es asegurarnos de que este assemblie de acción personalizada se añadirá al proyecto de instalación web. Para ello, hacemos clic con el botón derecho en el proyecto de instalación web en el explorador de soluciones y seleccionamos la opción ViewFile System. Hacemos clic derecho en el subdirectorio "bin" y seleccionamos "añadirProject Output" como hicimos ántes para añadir esta acción personalizada al proyecto de instalación web:

En este caso queremos seleccionar la librería de clases de acciones personalizadas en lugar de la aplicación web. Lo seleccionamos de la lista desplegable de proyecto encima del diálogo y seleccionamos la opción de "Primary Output" como la pieza que queremos añadir a nuestro proyecto de instalación web (esto hará que se añada nuestra acción personalizada):

Por último, configuraremos nuestro proyecto de instalación para que llame a nuestra acción personalizada durante la fase de instalación. Para esto, hacemos clic derecho en el proyecto de instalación web en el exporador de soluciones "ViewCustom Actions". Esto nos mostrará el editor de Aciones Personalizadas. Clic derecho en el nodo "Install" y elegimos "Add Custom Action":

Nos dirigimos al directorio Bin de la aplicación web y elegimos la salida de la ación personalizada que importamos:

El proyecto de Instalación detectará automáticamente la acción personalizada gracias al atributo "RunInstaller":

La clase de acción personalizada y el método de instalación se ejecutará ahora todas las veces que ejecutemos el programa de instalación.

6)Ejemplo de una acción personalizada útil: ASP.NET Script Mapping Checker

La última sección vimos cómo crear y configurar una acción personalizada vacía y un método de instalación. Hagamos ahora algo útil con ello. En concreto, añadiremos código para comprobar que la versión correcta de ASP.NET está mapeada correctamente para la aplicación que estamos creando.

Debido a que ASP.NET 1.1 y 2.0 pueden estar ejecutándose en la misma máquina, es posible tener configuradas varias partes del servidor web para que funcionen usando diferentes versiones de ASP.NET. Por defecto, las versiones se heredan jerárquicamente - es decir, si la aplicación raíz de un sitio está configurada para usar ASP.NET 1.1, todas las aplicaciones que pongamos bajo ese directorio raíz usarán por defecto la versión 1.1 también. Lo que haremos en los pasos siguientes es escribir algun código para asegurarnos de que nuestra nueva aplicación se ejecutará usando siempre ASP.NET 2.0

Para empezar, seleccionamos nuestra acción personalizada en el explorador de Custom Action (como en la sección anterior: "ViewCustomAction"), nos vamos a las propiedades y especificaremos algunos parámetros que le vamos a pasar a nuestra acción personalizada:

Concretamente, le pasaremos el directorio donde se va a instalar la aplicación, el mapa del sitio de IIS, y el nombre del directorio virtual que el usuario indique en el wizard de instalación. Esta cadena es:

/targetdir="[TARGETDIR]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"

Luego, actualizamos nuestra clase de acción personalizada para que acceda a estos valores y haga algo con ellos como:

using System;
using 
System.Configuration;
using 
System.Configuration.Install;
using 
System.ComponentModel;
using 
System.Diagnostics;
using 
System.IO;namespace MyCustomAction
{
    [RunInstaller(
true)]
    
public class ScottSetupAction : Installer
    {

        public override void 
Install(System.Collections.IDictionary stateSaver)
        {
            
base.Install(stateSaver);            
// Retrieve configuration settings
            
string targetSite Context.Parameters["targetsite"];
            string 
targetVDir Context.Parameters["targetvdir"];
            string 
targetDirectory Context.Parameters["targetdir"];            if (targetSite == null)
                
throw new InstallException("IIS Site Name Not Specified!");            if 

(targetSite.StartsWith("/LM/"))
                targetSite 
targetSite.Substring(4);            RegisterScriptMaps(targetSite, targetVDir);
        
}        
void RegisterScriptMaps(string targetSite, string targetVDir)
        {
            
// Calculate Windows path
            
string sysRoot System.Environment.GetEnvironmentVariable("SystemRoot");             // Launch aspnet_regiis.exe utility to configure mappings
            
ProcessStartInfo info = new ProcessStartInfo();
            
info.FileName Path.Combine(sysRoot, @"Microsoft.NETFrameworkv2.0.50727aspnet_regiis.exe");
            
info.Arguments = string.Format("-s {0}/ROOT/{1}", targetSite, targetVDir);
            
info.CreateNoWindow = true;
            
info.UseShellExecute = false;            Process.Start(info);
        
}
    }
}
El código anterior lanza la utilidad aspnet_regiis.exe que viene con ASP.NET en el directorio WindowsMicrosoft.netframeworkv2.0.5.0727, y le pasa el directorio en el que se va a instalar la aplicación, junto a la opción "-s" -- que le indica que IIS que la versión de ASP.NET que se usará en esa aplicación es la 2.0, y no heredará la versión de ninguna aplicación padre.

Gracias a John por poner esto en su blog.

Nota: Si estamos usando IIS 6 o 7, también querremos añadir alguna lógica a nuestra acción personalizada para asegurarnos que el pool de la aplicación que usará también será con la versión 2.0. También podemos decirle al administrador que compruebe manualmente eso después de instalar la aplicación.

7) Ejemplo de una acción personalizada útil:  Configurar la cadena de conexión a la base de datos.

En este ejemplo añadiremos alguna pantalla al instalador que permita al usuario configurar la cadena de conexión a la base de datos que usará la aplicación.

Clic derecho en el proyecto de instalación y abrimos las pantallas de la interfaz de usuario otra vez:

Clic derecho en el nodo "Instalar" en las pantallas de la interfaz de usuario y seleccionamos la de añadir un nuevo diálogo a la instalación del wizard:

Seleccionamos una de las pantallas TextBox para obtener los detalles de la cadena de conexión:

Clic derecho en el nodo de la pantalla TextBox y la movemos arriba (justo antes de que le digamos el sitio en el IIS y el nombre de la aplicación a usar):

Hacemos clic en la pantalla de TextBox y nos vamos a la ventana de propiedades. A traves de esta ventana podemos cambiar el texto que se mostrará en la pantalla, y también podemos controlar cuantos textboxs se van a ver:

Vemos que en la ventana de propiedades hemos puesto que los textboxs Edit2, Edit3 y Edit4 no son visibles. Ahora cuando compilemos y ejecutemos la instalación veremos este diálogo en los pasos del wizard:

Ahora que tenemos una interfaz para obtener la cadena de conexión, queremos asegurarnos de que se le pasa a nuestra clase de acción personalizada. Podemos hacer esto con un clic derecho en el proyecto de instalación web y seleccionando "ViewCustom Actions" y abriendo la página de propiedades de nuestra acción personalizada:

Queremos actualizar la propiedad CustomActionData y ponerla en la cadena de conexión de la base de datos que usaremos (Pasaremos el valor del textbox EDITA1 en la ventana de la interfaz de usuario):

/targetdir="[TARGETDIR]" /db="[EDITA1]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"

Podemos actualizar nuestra acción personalizada para obtener y usar esta cadena de conexión para actualizar el archivo web.config de nuestra aplicación. Aquí tenéis un método que abre el archivo web.config y lo actualiza programáticamente con la cadena introducida por el usuario:

void ConfigureDatabase(string targetSite, string targetVDir, string connectionString)
{
    
// Retrieve "Friendly Site Name" from IIS for TargetSite
    
DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/" + targetSite);
    string 
friendlySiteName entry.Properties["ServerComment"].Value.ToString();    // Open Application's Web.Config
    
Configuration config WebConfigurationManager.OpenWebConfiguration("/" + targetVDir, friendlySiteName);    

// Add new connection string setting for web.config
    
ConnectionStringSettings appDatabase = new ConnectionStringSettings();
    
appDatabase.Name DATABASE_CONNECTION_KEY;
    
appDatabase.ConnectionString connectionString;     config.ConnectionStrings.ConnectionStrings.Clear();
    
config.ConnectionStrings.ConnectionStrings.Add(appDatabase);    // Persist web.config settings
    
config.Save();
}

A partir de ahora, cuando ejecutemos el programa de instalación de el archivo web.config de nuestra aplicación web se actualizará con la cadena de conexión que le pongamos en la instalación.

Para aprender más sobre las APIs de configuración de ASP.NET  que se pueden usar para hacer cambios en los archivos web.config, echadle un vistado a la sección de administración de APIs de ASP.NET 2.0. Chris Crowe también tiene algunos ejemplos que muestran cómo usar las APIs de System.DirectoryServices para consultar opciones de IIS (Las he necesitado para aprender cómo buscar el "friendly name" del sitio desde IIS para abrir el archivo web.config).

También querreis mirar este ejemplo en la documentación de MSDN que muestra cómo crear programáticamente una nueva base de datos (completa con esquema y datos) con una acción personalizada. Podemos combinar la aproximacíon en el artículo de MSDN con la configuración que hemos usado arriba para automatizar todo el proceso de despliegue de la base de datos como parte de la instalación.

Resumen

Afortunadamente el tutorial de arriba muestra cómo empezazr con el soporte para proyectos de instalación web de Visual Studio. Clic aquí para descargar una versión completa del ejemplo que hemos visto.

Los proyectos de instalación web no son perfectos para todos los escenarios, y os lo recomiendo sólo para casos en los que queráis un paquete de instalación (por ejemplo: para dárselo a un cliente externo o para ponerlo como descarga en un web-site). Si estáis trabajando en mantenimiento/adminsitrando un sitio al que tenéis acceso directo, os recomendaría que usáseis la opción de "Publicar Aplicación" que viene con VS 2005 (para actualizaciones simples), o recomendaría crear un script Power Shell para automatizar las actualizaciones en un servidor remoto. Como ejemplo de un script realmente avanzado de Power Shell que usan los chicos de www.pageflakes.com, mirad este artículo de Omar.

Una pega de los proyectos de instalación web de VS 2005 es que sólo podeis compilar proyectos de instalación web desde el IDE - es decir, no podeis automatizar la creación de archivos .msi como parte de un proceso automatizado de MSBuild. Si realmente necesitáis esta opción, mirad el framework de instalación de WIX.

Podeis encontrar un completo juego de tutoriales WIX aquí. Si alguien quiere publicar un post que muestre cómo realizar los escenarios que hemos descrito con WIX, hacédmelo saber y os pondré un link (y os enviaré unos cuantos libros de .NET para daros las gracias!)

Espero que sirva.

Scott

P.S. Mirad mi página de trucos de ASP.NET  para ver más trucos y ejemplos con ASP.NET.

 Traducido por: Juan María Laó Ramos. Microsoft Student Partner

toH tlhIngan Hol DajatlhlaH ‘e’ DaneH’a’?

42 pensamientos en “Trucos: Creación de programas de instalación para ASP.NET con VS 2005

  1. joseluinux

    Hola,
    me parece demasiado interesante este artículo, es algo muy parecido a lo que intento hacer, lo que quiero hacer es q durante la instalación ingrese el usuario el dominio en donde se alojara el Web Service para que vaya y configure el archivo web.config, en la cadena de conexión que va al Active Directory ejemplo:

    espero me apudan orientar gracias!!
    Saludos.

    Responder
  2. Alejandro Nungaray

    Hola, yo estoy haciendo un paquete de instalacion para una aplicacion desk y los pasos son muy parecidos, pero necesito agregar un desinstalador tambien, pueden orientarme como hacerlo?

    Responder
  3. Daniel

    Muy buen artículo. Tengo algunas dudas, espero que puedas ayudarme. Siguiendo paso a paso el tutorial, en la ventana de “Add Project Output Group” solo me aparece la opción “Content Files”, ¿sabes a que se debe?. Por otro lado, esto me instala todos los archivos de código fuente, ¿hay alguna manera de omitir en la instalación los .vb o .cs?

    Gracias anticipadas.

    Responder
    1. Luis Fernando

      Daniel, Lograste hacer tu cometido?
      El de no agregr los archivos de .cs o .vb. ? y que te fincionara la aplicacion?

      Responder
  4. Erick Alonso

    Excelente artículo, pero tengo el mismo problema de Daniel, sólo me muestra en “Content Files”… porque?, por favor necesito ayuda…

    Responder
  5. David Montiel

    Bueno pues respecto a la pregunta de como instalar sitios aspx sin agregar los archivos cs o vs, simplemente deberán de precompilar su web site desde el asp_compiler. exe, posteriormente los archivos precompilados aparececrán en su directorio bin y finalmente deberán de borrar sus archivos cs o vb ( del proyecto precompilado) y en este proyecto deberán de seguir este tutorial de la misma manera, no se preocupen si solo aparece agregar los archivos de contenido. :) Su amigo Montrix

    Responder
  6. eduardo

    muy muy bueno el articulo, muchas gracias, es lo que necesita, ya que estaba creando los sitios web por la opcion Nuevo sitio WEB y cambie con el SP1 a ASP.NET y no entendia por que se caian las paginas..

    Responder
  7. iram

    oyes tengo un problema segun he visto el visual 2005 y 2008 no cuentan con solucion por lo tanto solo puedo tener un poryecto abierto al mismo tiempo y no puedo agregar otro proyecto para agregar el paquete de instalacion hay alguna forma de configurarlo para poder tener varios proyectos abieros como la version 2003 del visual studio

    Responder
  8. Emiliano

    Hola, hay algun tutorial para ver como hacer para personalizar mas un instalador? Es decir, ponerle iconos, imagenes y cambiar el texto del wizard que se da cuando ejecutamos nuestro instalador? en este caso uso VB 2005 y es una aplicacion de Escritorio.
    Saludos! Muy bTuto!!!
    E.Hasan de Tucuman (Argentina)

    Responder
  9. Juan Jose Garcia Alcacio

    Buen dia , antes que nada el tutorial esta excelente, actualmente desarrollo un proyecto final para una materia de mi MASTER, y la verdad es que no soy my bueno programando, he creado el instalador tal como aqui se comenta, pero me han ensañado que el usuario debe realizar la menor cantidad de trabajo, la mayor parte este no sabe de los pre-requisitos y mucho menos como instalarlos, alguien me podria orientar y decirme como hacerle para que aparte de instalar el sitio , el MSI determine si ya se cuenta con los pre-requesitos y si no tambien los instale, en mi caso estos serian ISS y .NET FRAMEWORK, me seria de mucha ayuda, gracias de antemano.

    Responder
  10. Marco Antonio

    Hola amigos, es la primera vez que escribo, pero siempre reviso este foro para salir de algunas dudas ya que se tiene buenas soluciones. Pero ahora requiero ayuda: lo que necesito es crear un proyecto Web con asp.net 2005 con varios sub proyectos dentro de un proyecto maestro. Como le hago para que compartan el mismo directorios y se veran entre si.
    Espero su ayuda. Gracias.

    Responder
  11. Nevo

    Queria saber si funciona igual que el aspnet_compiler.exe, la opcion de Publicar Sitio Web del vs2005, te compila todo sin vb o cs…. porque al generar mi instalable me da como error que el sitio ya esta precompilado, sólo me muestra en “Content Files”…

    Responder
  12. Vio

    Hola Felix:

    No he encontrado nada sobre cómo hacerlo por código. Parece ser que el cambio del icono hay que hacerlo manualmente cuando se genere el .msi (Si es que se puede, no lo he probado).
    Sin embargo, si encuentras algo, coméntalo por aquí.

    Un saludo

    Responder
  13. Pingback: Proyecto Asp - VB-MUNDO - Programacion Visual

  14. XD

    Yo tengo una duda respecto a los installs, he probado a marcar la opcion RemovePreviousVersion = true pero el install no me la quita, es mas, me cierra porque existe esa version… Hay que darle mas opciones???

    Buen tutorial, no sabes lo que me ayudo.

    Responder
  15. tripleX

    holq que tal, tengo un problema que no tengo idea como resolver. se realizo una aplicacion web en el framework 1.1 y despues se le agregaron modulos en framework 2.0, a la hora de que se le agregaron los modulos a la aplicacion que esta en el servidor manda un error de que no se puede parsear el codigo y dice que el error esta lo esta provocando el framework 1.1 alguien sabe como puedo resolverlo

    Responder
  16. Alissa

    Hola, asi como algunos comentarios que hicieron , Siguiendo paso a paso el tutorial, en la ventana de “Add Project Output Group” solo me aparece la opción “Content Files”. y no aparece primary output

    comentas que no hay problema si solo aparece esa opcion, pero que hay de la opcion de primary output segun lei ahi se encuentran los archivos dll o exe generados por el proyecto.

    mi prugunta es que si es esto verdad , seria importante las dll que se agregran?

    tambien tengo otra pregunta, mi proyecto utiliza controles ajax y cuando cree mi aplicación en la carpeta bin se agregaron una dll

    como funcionaria esto con el proyecto de instalacion, seria agragerle algo mas???

    perdon por mi ignorancia y espero que puedas sacarme de esta duda.

    Responder
  17. AlbertoC

    Es un buen articulo me ayudo bastante, mas quisiera saber si existe la posibilidad de actualizar paginas especificas del sitio web.

    Responder
  18. Hugo

    Hola, te hago una pregunta, estoy teniendo un problema con un projecto muy muy básico que intentaba instalar un servicio de windows con un setup project del visual studio. Tengo 2 proyectos, uno con el servicio y otro con el instalador. Mi problema empezó cuando me tiraba null al tratar de sacar datos del custom data: yo pensaba que estaba poniendo mal los parámetros o algo así, pero no: al debugguear escribiendo a un archivo (es la forma mas fácil que se me ocurrió) descubro que lo nulo es el Installer.Context de mi clase que hereda de Installer. ¿Tenés alguna idea de qué pueda causar esto?

    Responder
  19. frank

    hola soy nuevo pero quisiera q complemente alguien el comentario de VIO
    pues el tutorial no esta el codigo para la configuracion de connection string

    Responder
  20. Arturo

    Hola, esta muy bueno ese tutorial.
    Pero estoy haciendo una aplicacion en vb.net 2008 tipo cliente servidor, que se conecta a una base de datos oracle.
    La pregunta es: ¿Puedo agregar el cliente de oracle a los prerequsitos para que cuando la aplicacion se esta instalado, verifique si lo tiene, si no que lo instale o no lo instale.

    Saludos muchas gracias por la ayuda.

    Responder
  21. Vio

    Hola Arturo:

    No conozco en detalle el cliente de oracle ni he trabajado nunca con él. Si es tan sólo una dll cuando añades un proyecto con una referencia a esa dll el instalador lo incluirá automáticamente. Sin embargo, si es un componente a instalar a parte, en este enlace http://msdn.microsoft.com/en-us/library/ybshs20f(VS.71).aspx
    tienes toda la información necesaria.
    Lo normal es que si es un componente aparte, oracle tendrá una versión de las que se llaman “redistributables” que es un elemento que tendrás que añadir a tu instalador y automáticamente comprobará si está instalado y en caso de no estarlo lo instalará.

    Espero que te sirva.

    Responder
  22. Charlesco

    Thnks, por el Foro, la explicación esta increible, No se si puedas ayudarme, estoy tratando de invocar o ejecutar un .bat, al terminar la instalación, mi idea es apartir de ese .bat poder reiniciar el servicio del MSDTC, sabes algo al respecto?. Gracias. y de nuevo felicidades por el aporte.

    Responder
  23. Carlos Eduardo Calderón Vildoso

    Estimado deseo felicitarte por lo descriptivo de tu post…. realmente me ayudó muchisimo, esto de los instaladores es complicado sin documentación y tu nos colaboraste mucho.
    un abrazo y nuevamente FELICIDADES!!!!!!!!!!!!!

    Responder
  24. Eddy Contreras

    Un gran articulo, pero me surge una duda, es lo mismo con vs 2010? porque estoy trabajamdo el .net 4, y tengo mas de un proyecto en la solucion, me gustaria que me orientaras para poder realizarlo.
    Gracias

    Responder
  25. miqqes

    Muy Buen articulo, se agradece el averlo compartdo.
    solo me restaria hacerte una peticion, mira… desde cuando he estado buscando el codigo o el ejemplo y/o tutorial para generar el menú que tienes en tu pagina(en la parte superior derecha, mirando de frente a la pantalla)
    Bueno si quieres compartir o darme un asesoria te lo agradecere enormemente, gracias!!!

    Responder
    1. Juanma Autor

      Hola miqqes:
      Supongo que te refieres a la nuve de tags tridimensional.
      Es un pluning de WordPress llamado WP-Cumulus.
      Me alegra que te guste :)

      Espero que sirva

      Responder

Deja un comentario