¿Cómo creo un proyecto InstallShield LE para instalar un servicio de Windows?


104

Ayer descargué Visual Studio 2012 cuando se lanzó en MSDN. He notado que algunos de los tipos de proyectos que teníamos en 2010 ya no existen o son diferentes. La mayor diferencia para mí en este momento es la eliminación del proyecto de Windows Installer. Ahora nos vemos obligados a utilizar InstallShield LE (edición limitada). El problema aquí es que escribo un montón de Servicios de Windows y no veo cómo configurar InstallShield LE. Parece que nosotros (mi empresa) tendremos que invertir en licencias para la edición profesional.

¿Alguien ha encontrado una forma de instalar servicios en InstallShield LE? Cuando usa el proyecto de Windows Installer, simplemente configura las acciones personalizadas.


1
El uso de acciones personalizadas de InstallUtil en proyectos de implementación de Visual Studio fue en realidad una práctica muy pobre. Básicamente, se trata de reinventar la rueda con una solución frágil porque la herramienta de creación subyacente no expuso las capacidades nativas de MSI.
Christopher Painter

Respuestas:


161

Para Visual Studio 2012 e InstallShield LE, haga lo siguiente:

  • Ejecute el asistente de proyectos InstallShield y agregue el resultado principal de su servicio a la sección Archivos de la aplicación.
  • Una vez que haya terminado con el asistente del proyecto, haga doble clic en el elemento "Archivos" en el paso dos del proyecto de instalación.

Sección de archivos

  • Haga clic derecho en la salida principal de su servicio y vaya a propiedades.
  • Haga clic en la pestaña "Configuración de COM y .NET" y marque la casilla de verificación "Clase de instalador". ingrese la descripción de la imagen aquí
  • Haga clic en Aceptar

Ahora, una vez que cree y ejecute su instalación, su servicio aparecerá en el complemento de Servicios de Windows.

Tenga en cuenta que esto asume que agregó un "Instalador de proyecto" a su proyecto de servicio (haga clic con el botón derecho en la hoja de diseño del servicio y haga clic en "Agregar instalador"). Puedo confirmar este trabajo en Windows 8 con Visual Studio 2012 / InstallShield LE.


Ok, esto también funciona en VS 2010 y Win 7 Pro. Todavía tengo que probarlo en VS 2012, pero debería hacerlo. Gracias.
fizch

3
¿Es posible tener un diálogo pidiendo al usuario la cadena de conexión de la base de datos (servidor, autenticación y nombre de la base de datos) y actualizar el archivo de configuración del servicio de Windows usando InstallShield LE?
Adelia Benalius

2
Esta es una guía bastante buena: c-sharpcorner.com/uploadfile/cb88b2/… .
Jonty

1
Proyecto de instalación de Visual Studio en VS 2013. Descargar: visualstudiogallery.msdn.microsoft.com/... voz del usuario: visualstudio.uservoice.com/forums/121579-visual-studio/... Referencia: blogs.msdn.com/b/visualstudio/archive /
2014/04/17

1
Esta opción no inicia el servicio después de la instalación. Para instalar el servicio e iniciarlo, en el explorador de soluciones, seleccione 3. Configurar el sistema de destino> Servicios .
Rajeev

24

Recientemente instalé VS 2012 con Install Shield LE. Al principio seguía recibiendo un error de servidor interno ISEXP -5036 después de una compilación (esto fue después de configurar un proyecto ISLE y ejecutar el Asistente de proyecto Install Shield). Finalmente descubrí que estaba intentando crear el MSI en el tipo de medio DVD-5, que es donde estaba fallando. Por alguna razón, al crear la solución nuevamente desde cero, de alguna manera se reconoce que solo se compila en los tipos de medios CD_ROM y SingleImage que funcionan.

De todos modos, para rectificar el error 5036, haga clic en la pestaña Compilar en VS 2012 (menú superior), seleccione el administrador de configuración y debería ver que su archivo de configuración IS está seleccionado en la configuración del DVD-5. Cambie esto a CD_ROM y haga clic en cerrar. Una vez que lo construya / reconstruya, se completará sin error IS 5036.

ingrese la descripción de la imagen aquí


2
Puede que esto no tenga nada que ver con su problema, pero resolvió el mío. ¡Gracias! +1
David

El mismo problema para mí desde el principio, la instalación predeterminada tenía DVD-5 como configuración y la instalación no se pudo compilar. ¡Con su consejo lo cambié a Imagen única y lo construí sin problemas!
Nick Bork

Se seleccionó DVD-5. Respuesta simple pero excelente
beaumondo

6

Si bien el uso de la casilla de verificación de la clase del instalador puede funcionar en algunos casos, puede experimentar el siguiente error:

Error 1001, el servicio especificado ya existe

Aquí hay un extracto de este enlace sobre cómo resolver este problema:

Para Error: Error 1001 El servicio especificado ya existe

Este error se producirá si el componente que instala un servicio .NET está configurado incorrectamente con "Clase de instalador .NET" establecido en Sí. El método para instalar un servicio .NET es utilizar la vista Componente \ Configuración avanzada \ Servicios, no la configuración "Clase de instalador .NET". Al realizar definiciones en la vista Componente \ Configuración avanzada \ Servicios, se crean entradas en las tablas ServiceControl y ServiceInstall de Windows Installer. Estas entradas son utilizadas por la acción "InstallServices" de Windows Installer para instalar el Servicio.


¿Podría ayudarme y explicarme esto? ... ¿Se puede encontrar la vista Componente \ Configuración avanzada \ Servicios "?
pithhelmet

está en la edición premier del instalador (ffs! microsoft ¿por qué sacaste el tipo de proyecto de instalación?) .. Si tienes la edición premier. community.flexerasoftware.com/…
Paul Hutchinson

Descubrí que está relacionado con la longitud del nombre del proyecto de instalación, es decir, cambie el nombre de su proyecto de instalación a algo más corto como "Instalar" o "Configuración".
Jonty

4

Si su proyecto es .NET, intente entonces puede usar la clase ServiceProcessInstaller con InstallShield LE.

Para que funcione con InstallShield, debe ir al árbol de "archivos" de InstallShield y hacer clic derecho en su archivo. Luego marque la casilla de verificación para "Clase de instalador" en la pestaña "Configuración de COM y .NET".

Lo hice funcionar, pero tuve problemas en algunos sistemas operativos como Windows 2008R2. Su experiencia puede ser diferente.

Aquí hay un ejemplo: http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C


1
Lo siento. No vi esto hasta hoy. Parece que es prácticamente la misma respuesta que la que acepté. Lo haré +1.
fizch

4

Tuve todo tipo de problemas con esto.

Como sigue.

  1. InstallShield tarda mucho en descargarse
  2. el proceso de registro es un fastidio.
  3. las opciones de configuración son confusas y demasiado complejas.
  4. la solución aceptada en este hilo es un truco y no siempre funciona; consulte 1001 en la documentación; esencialmente, debe atravesar el muro de pago para obtener las opciones de configuración correctas para instalar un servicio de Windows.

La solución para mí, como se mencionó en otra parte, fue abandonar InstallShield

ingrese la descripción de la imagen aquí

Muy fácil desde ese punto.

Editar: Actualización: instale la última versión desde aquí https://wix.codeplex.com/releases/view/115492 para vs 2013/2015


3

Los proyectos de configuración de Visual Studio están de vuelta en VS 2013 como una extensión de Visual Studio.

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

Actualice su solución y proyectos a VS 2013. Si todavía está en VS 2010, probablemente sea mejor que actualice directamente a VS 2013.

Mi experiencia con Installsheild LE es que es muy peculiar, pero una vez que descubres los trucos, es más fácil de usar. Sin embargo, creo que la edición limitada es una forma de Microsoft y Flexera de vender la edición con todas las funciones. En otras palabras, primero pagamos a Microsoft mucho dinero por Visual Studio y luego a su socio (en el crimen) más por Installsheild. Mala estrategia que no funcionó ya que tuvieron que traer de vuelta los proyectos de instalación en VS 2013.


2

He escrito sobre este tema:

Aumento de InstallShield mediante XML de Windows Installer - Servicios de Windows

Básicamente, crea un módulo de combinación usando WiX para encapsular el servicio y luego lo agrega a su proyecto installshield. (Asegúrese de asociarlo al directorio INSTALLDIR para asegurarse de que su archivo vaya donde espera). Compile y pruebe en una máquina virtual. Pedazo de pastel.


¿Otra tecnología para aprender? Hasta ayer, no había oído hablar de WIX. Todavía no sé nada al respecto. Parece que todo este proceso se está volviendo cada vez más difícil para algo que solía tomar solo unos pocos clics.
fizch

Solo se necesitan unos pocos clics para ejecutar un instalador. Crearlos siempre ha supuesto mucho más esfuerzo.
Christopher Painter

Además, solo tomó unos pocos clics configurar el instalador. Tienes que escribir el título, el fabricante, etc., pero no tienes que crear un documento xml completo. ¿Qué me puedes contar sobre WIX? Puedo decir que obviamente sabes mucho al respecto. ¿Qué es? ¿Dónde lo consigo? ¿Como lo uso? Etc ...
fizch

He estado escribiendo instaladores durante 16 años y solo las instalaciones simples con un solo EXE y acceso directo me llevan 'solo unos pocos clics' para crear. De todos modos, puede encontrar WiX en CodePlex y hay un libro publicado sobre el tema. La tecnología subyacente es Windows Installer y esa documentación se puede encontrar en Platform SDK y en MSDN.
Christopher Painter

5
En serio, "hay un libro publicado sobre el tema ... documentos en el SDK". ?? Chris, solo estamos tratando de migrar nuestras soluciones de 2010 a 2012 y la instalación / configuración nos detiene en seco. MS, traer de vuelta de instalación VS / instalador visualstudio.uservoice.com/forums/121579-visual-studio/...
JimSTAT


2

Acabo de tener algunos problemas para encontrar dónde agregar el instalador como se indica en la respuesta. Así que aquí está cómo.

Haga doble clic en su clase de servicio dentro de su proyecto de servicio de Windows. Una pantalla en blanco con el texto "Para agregar componentes a su clase, arrástrelos desde la Caja de herramientas y use la ventana Propiedades para establecer sus propiedades ..." Haga clic derecho en cualquier lugar menos en los enlaces y seleccione "Agregar instalador"

nos vemos


0

Tenga en cuenta que toda la explicación anterior no le ayudará si planea crear más adelante una actualización de esa configuración. InstallShiled LE no puede detener el servicio en ejecución cuando se actualiza. Tampoco puede hacerlo desde Windows Service Installer -> evento BeforeInstall.


0

Quería poner esto aquí;

En VS 2015, al hacer esto, encontré el error 1001 durante la instalación repetidamente.

La respuesta en esta página explica que en las versiones más nuevas (cualquier cosa más allá de 2012) , aparentemente necesita dejar explícitamente la opción de clase de instalador sin marcar y luego agregar su servicio de Windows en la sección Servicios en el Paso 3 del proyecto de instalación:

Error 1001 al instalar el servicio personalizado de Windows

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.