Crear un instalador en Visual Studio 2013

En mi publicación anterior Cómo Crear Un Instalador Para WindowsApplication en Visual Studio 2010,  vimos los pasos a seguir para crear el instalador en Visual Studio 2010, estos pasos no son aplicables para crear un instalor en Visual Studio 2012 y Visual Studio 2013  en esta publicación veremos precisamente como crearlo.

Antes de poder llegar al punto de enfoque, debemos de primero entener que es ClickOnce.

ClickOnce Según Wikipedia:

El principio básico de ClickOnce es facilitar el despliegue de aplicaciones de Windows. Además, ClickOnce tiene como objetivo resolver los problemas con otros tres modelos de despliegue convencionales: la dificultad en la actualización de una aplicación implementada, el impacto de una aplicación en el ordenador del usuario, y la necesidad de permisos de administrador para instalar aplicaciones.

Aplicaciones ClickOnce desplegados son considerados de “bajo impacto”, ya que se instalan por usuario, no por equipo. No hay privilegios de administrador son necesarios para instalar una de estas aplicaciones. Cada aplicación ClickOnce está aislada de la otra. Esto significa que una aplicación ClickOnce no es capaz de “romper” otro. ClickOnce utiliza seguridad de acceso a código (CAS) para garantizar que las funciones del sistema no puede ser llamado por una aplicación ClickOnce desde la web, lo que garantiza la seguridad de los datos y el sistema del cliente en general.

A continuación veremos los pasos a seguir de como crear un instalador en Visual Studio 2012 y Visual Studio 2013.

1.  Creamos el proyecto en Visual Studio.

Screenshot (1)

En este tutorial creamos un proyecto tipo Windows Form Application, pero los pasos son los mismos para crear el instalador de varias plataformas.

Screenshot (2)

2.Se recomienda, antes de proseguir, ofuscar nuestro codigo para que asi sea dificil de entener o desempaquetar (si desean saber mas sobre los ofuscadores y cuales se recomiendan, pueden leer esta entrevista de mi amigo Willy Dev, gran Ninja de la informatica).

Una vez creado y construido todo el proyecto, vamos a la pestaña de “Explorador de Soluciones” en Visual Studio, hacemos click derecho en el nombre del proyecto y hacemos click Publish o Publicar.

Screenshot (4)

Nos aparecerá la siguiente ventana.

Nota: Debemos de indicar donde queremos que el instalador y todos los archivos se guarden, si lo dejamos tal cual se guardara en la carpeta donde se encuentra el proyecto.

Screenshot (5)

3. Tenemos tres opcionespara alojar nuestra aplicación Alojar en Web, Alojar en un recurso compartido de archivos y  Alojar en un CD-ROM o DVD-ROM.

Alojar en Web: Debe de indicar la dirección del sitio en el paso numero 3, he indicar si la aplicación estará disponible sin internet.

Alojar en un recurso compartido de archivos: Debemos de indicar una dirección valida para el archivo con el formato \\EduRamirez\LatamTechnology\

Alojar en un CD-ROM o DVD-ROM: en este caso será el que utilizaremos y por el momento no necesitamos indicar ninguna dirección.

Screenshot (6)

Presionamos Siguiente o Next

4. Ahora, debemos de indicar donde la aplicación buscara las actualizaciones. Puede ser desde un recurso compartido de archivo o un sitio web, nosotros seleccionamos “por laboratorio” que la aplicación no buscara actualizaciones.

Screenshot (7)

Presionamos siguiente.

5. Verificamos que todo este como deseamos y presionamos finalizar o finish.

Screenshot (8)

Bien, ahora nos abrirá la carpeta donde se encuentra nuestro instalador y todos los archivos necesarios.

Screenshot (9)

Podemos darle doble click al setup y ver como es el tipo de Instalador de tipo ClickOnce.

Como podemos ver en la siguiente pantalla, nos muestra el Nombre de la Aplicación o Sistema, luego desde donde lo estamos Instalado y que compañía o Desarrollador independiente fue quien publico el instalador(en otra publicación próximamente mostrare como hacer la firma digital).

Screenshot (10)

Una vez instalado veremos nuestra aplicación o programa abrirse.

Screenshot (12)

Si quieres verificar fue efectiva, podemos ir a todos los programar y verificar que ahí se encuentra ya la aplicación instalada.

Screenshot (13)

Como vemos debido al nombre del proyecto es la ultima aplicación o programa instalado.

 

Para personalizar el instalador puede ver la entrada Configuración de un instalador Visual Studio 2012 y 2013

Anuncios

38 Comentarios

  1. Hola Eduardo, tengo instalado visual estudio 2010, supongo que la plataforma es bien parecida a la de 2013. Lo que me gustaría saber es cóm hago para crear un .exe sin que sea un instaladdor, es decir, que al momento que haga clic sobre él, se abra la aplicación sin necesidad de instalarla. Disculpa mi ignorancia en el tema es que cree una aplicación básica y me gustaria que para usarla no tuviese que instalarla. Muchas gracias por la ayuda. Abrazo!!

    • Hola Gabriel, puedes buscar dentro de la carpeta de tu proyecto la carpeta “bin” aqui deben de haber una o dos carpetas Debug o Release, y dentro de esta se encuentra el .exe de tu proyecto que se autogenera cada vez que ejecutas o compilas el proyecto en Visual Studio, OJO: donde ejecutes tu proyecto debe de tener el .Net Framework 4.0 para poder ser ejecutado.

      Saludos Gabriel

  2. hola yo tengo una duda, parecida a la de luciano para hacer una aplicacion instalador con la base de datos SQL server metida adentro, se puede? y el usuario al cual yo le instale la aplicacion, debe tener el .net 4.0 y el sql server express? o como va a hacer para crearse una base de datos en el usuario? gracias por responder de antemano.
    estoy usando visual 2012, c#

    • Hola Nicolas, Dentro del .exe no se puede, tienes que correr el script de la base de datos en el servidor de tu cliente, el cliente debe de tener .Net Framework en su maquina y el SQL Server Express en el servidor. Tambien te recomiendo que uses un archivo llamado App.Config, de esta forma si tienes que cambiar algo en la conexion a tu base de datos, solo tendra que ser en una linea y no en todo el sistema. http://msdn.microsoft.com/es-es/library/ms243192.aspx

      • gracias por responder eduardo.
        la maquina misma de mi cliente va a ser el servidor de datos,
        osea le tengo que instalar yo mismo el sql server express, configurarlo y todo eso?, y luego, crear la base de datos desde la interfaz de sql express? o hay una manera sencilla de hacer doble clic y que cree la base de datos de un script que yo tenga?
        Otra cosa, el archivo de app.config es para que sepa donde apuntar a los datos y donde ir cuando quiera absorber datos del servidor? ese app.config lo configuro para meterlo en el instalador, o es un archivo aparte?

      • Nicolas,

        Tienes que instalar el SQL Server Express en la maquina del cliente, en tu maquina, entras a SQL Server Managment Studio, y obtienes el Script con todo el diseño de la base de datos.

        En la maquina del cliente copias ese codigo y te generara la base de datos en tu cliente. si el App.Config es para saber donde estan los datos y como conectarse y puede ser que en la maquina cliente el servidor de base de datos tenga otro nombre, lo cual tendrias que cambiar la conexion en cada parte, con este archivo solo tienes que cambiarla una sola vez y listo.

  3. no me apareces por facebook, te escribo por aqui mejor asi los usuarios que tengan las mismas dudas que yo ya quedan atendidas.
    Gracias por tus respuestas Eduardo,
    Mi archivo app.config, al hacer el instalador, se me hace con cadena de conexion de mi pc, como hago para hacerlo estandar y yo poder con ese instalador ya no cambiarlo mas cuando lo instale en las maquinas de mis clientes?

    por ejemplo ahi tengo data source nicolaspc/nicoPC, pero al generar el instalador me queda como esa cadena, podria poner por ejemplo : “Data Source=.”? ese punto e visto que lo usan para señalar el servidor local.

    Una cosa que me paso es que generé mi instalador y lo quise traspasar a mi pc de escritorio, ahi ejecuto el setup.exe desde mi pen drive, se instala y todo, pero al ejecutarlo no se abre, y no se que pasa? nose si sera el problema con la bd que no la e creado en la maquina de escritorio,puede ser q sea por eso?

    Te felicito por esta pagina Eduardo, yo estoy haciendo un trabajo de programacion y tengo que instalarlas en varias PC, y me ponen nota jeje, tengo 20 años estoy comenzando a conocer estas cosas.Gracias.

    • Hola Nicolas,

      Mira lo mas recomendado es cambiarlo en cada servidor que lo instales, podrias utilizar ./Mi_Instancia_Servidor o (Local)\Mi_Instancia_Servidor siempre tendrias que verificar el nombre de la instancia del servidor, porque tiende. Claro el DataSourse es casi casi obligado, pero podes utilizar el que mas te paresca. El error no es ese, tendriamos que ver el codigo, si fuera la base de datos, te mostraria un error (Estas utilizando Try Casth??) .

      A la orden Nicolas, lo recomendado es que instales un servidor y luego crees acceso directo en cada maquina, o que cambiar la cadena de conexion por la direccion IP del Servidor, si las maquinas tienen muy poco recursos, la primera es buena opción, si tienen algo respetable 3GB de RAM, podes poner el .exe en cada maquina, pero el App.Config siempre apuntando a la IP del servidor.

      Animo,

      • No en mi codigo no estoy utilizando try catch, mira te pongo codigo de app.config que me genera cuando hago clases de linq to sql

        </configuration

        ese codigo tengo en mi app.config,
        cuando hago el instalador, cómo edito el app config luego de generarlo y luego que ande para esa maquina de mi cliente?

        tu dices que ahi en mi Data Source ponga: ".\instancia_del_cliente"?
        esa instancia del cliente es cuando yo le instalo el sql server express en su pc verdad?
        con la ip, que no se de donde la saco, quedaria "Data Source:(local)\172.343..2323"?? o sin el local?

      • ?xml version=”1.0″ encoding=”utf-8″ ?>
        configuration>
        configSections>
        /configSections>
        connectionStrings>
        add name=”Datos.Properties.Settings.odontologiaFinalConnectionString”
        connectionString=”Data Source=.;Initial Catalog=odontologiaFinal;Integrated Security=True”
        providerName=”System.Data.SqlClient” />
        connectionStrings>
        /configuration>

        Ahi ta bien el codigo

      • Mira estos son dos ejemplos, Conexión via IP
        “Data Source=190.190.200.100,1433; Network Library=DBMSSOCN; Initial Catalog=pubs; User ID=myUsername; Password=myPassword;”
        Adjuntando una base de datos, para conectarnos a SQL Express (caso mencionado arriba)
        “Server=.\SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname; Trusted_Connection=Yes;” Buscame en Facebook edsantoshn, y asi te apoyo por skype o lync

  4. Hola! Tengo Visual Studio 2010 (supongo se parece al 2013) pero necesito que mi proyecto sea portable y lo pueda ejecutar (dando solamente clic al .exe generado) desde cualquier computador, pero no me esta funcionando, solo corre bien el ejecutable si le doy depurar el visual. El proyecto esta configurado para que agregue los .lib que estan en la carpeta raíz del proyecto (supongo que por lo tanto usa .dll que estan también ahí) debo agregar también los .lib básicos de VS en la carpeta raíz del proyecto? Ya que la falla que tiene es con funciones de librerías de C++ y no otras que agregué (por ejemplo glut). Disculpa de antemano si no fui lo suficientemente clara 🙂 Saludos.

    • Hola Josseline,

      Bien el ejecutable se encentra en bin\debug o Release dependiendo de como lo tengas configurado. Este ejecutable es “portable” pero si tienes que instalar .NET Framework en la maquina que desees instalarlo si utilizas una base de datos, te recomiendo SQLite de esta forma no tendrías que instalar una instancia de SQL Server en cada maquina

  5. Hola amigo! tu informacion me sirvio de mucho. Solo una pregunta, que sucede si mi aplicacion necesita una Base de Datos y procedimientos para ejecutarse correctamente?
    Lo he intentado con el InstallShield pero al momento de ejecutar mi BD me dice que se puede conectar a la ruta especificada y que se ha creado una excepcion. Me podrias ayudar?

  6. Hola!! Hace muy poquitos días estoy aprendiendo de Visual Studio (tengo la versión Community) y hablando de instalador, me preguntaba si me puedes orientar el cómo se debe configurar el programa para que busque actualizaciones automáticamente y pregunte al usuario si desea bajar la actualización, e instalarse automáticamente desde la web la nueva versión. Siempre me pregunté cómo se hacía eso. Yo estoy operando de a poco con lo más visual posible, Windows Forms, porque de còdigo no domino mucho todavía.

    Te hago esta consulta por curioso pero también para ir aprendiendo, la información que me puedas brindar me va a servir como oro.

    Un abrazo grande!!!

    • Hola Octavio,
      De esta forma el programa busca y instala de forma automatica las actualizaciones esto ocurre solamente cuando el programa inicia. obviamente debes de indicar el lugar donde el programa buscara las actualizaciones. Te recomiendo utilizar WPF, winform quedo en el pasado, con WPF puedes crear maravilla de sistema en la parte grafica y eso siendo sincero le importa muchisimo a los clientes.

  7. Saludos, que excelente información, tengo una consulta, tengo pensado hacer un sistema con c# y base de datos postgredsql se que debo instalar y todo y al finalizar el sistema pienso crear el instalable tal como lo has hecho aquí mi duda es que pasa si debo hacer un cambio al sistema? Tendria que crear de nuevo el instalador y volver a instalar a cada maquina o hay forma de instalar actualizaciónes o algo similar? Aunque supongo no me afecta en nada instalar una nueva version del sistema ya que mi base de datos no se tocaría. Gracias por la ayuda.

    • Saludos Carlos,

      Si utilizas este tutorial, solo deberias escribir una dirección donde el programa debe de buscar si existen actualizaciones, digase un FTP, un recurso compartido, una carpeta en el servidor. pero no puedes colocar la dirección de una maquina, o que lo busque en la misma maquina que esta instalado, si haces esto, deberas copiar la actualización en cada una de las maquinas que tiene tu sistema. El sistema busca automaticamente las actualizaciones cada que inicia el programa a ejecutarse.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s