visual studio son servicio que operacion las instalador instalacion etiquetas etiqueta error ejemplo crear concepto windows visual-studio visual-studio-2008 windows-installer

windows - servicio - Proyecto de instalación de Visual Studio 2008-Acciones personalizadas que no se activan



que son las etiquetas en visual basic (3)

El exe o la biblioteca que está agregando al paso de confirmación debe contener una clase derivada del instalador y marcada con el atributo RunInstaller de la siguiente manera:

[RunInstaller(true)] public class ApplicationInstaller : Installer { public override void Commit(IDictionary savedState) { // Do some work on commit } public override void Install(IDictionary stateSaver) { // Do some work on install } public override void Uninstall(IDictionary savedState) { // Do some work on uninstall } }

Espero que esto ayude.

Parece que no puedo hacer funcionar una acción personalizada. Podría estar haciendo esto mal. Esto es lo que trato de hacer:

Me gustaría ejecutar una acción personalizada en la instalación de mi aplicación (proyecto de instalación de Visual Studio) que ejecuta un ejecutable. El ejecutable simplemente hace algunas tareas de copia de archivo system.io, y he confirmado que el ejecutable cuando se ejecuta por sí solo funciona perfectamente.

  1. Creé el proyecto de instalador
  2. agregado el exe a la carpeta de la aplicación
  3. fue a acciones personalizadas y agregó el exe al paso Confirmar
  4. InstallerClass está establecido en verdadero
  5. Corrió el instalador, no obtuvo el resultado que esperaba. Entonces agregué una línea para escribir en el registro de Windows. Miró en el registro de Windows después de ejecutar el instalador de nuevo y parecía que no se ejecutó. Agregué un debug.break al código del exe Unisntalled / reinstalled mi instalador y no pasó nada. Finalmente me senté y observé los procesos y confirmé que el exe nunca se ejecuta.

¿Alguna idea?

Sistemas dirigidos: Windows XP, Vista Visual Studio Versión: 2008 Sp1 Idioma: VB.NET Targeted Framework: 2.0

Excelente. Creo que me estoy acercando gracias al código que publicaste. Lo convertí a VB y recibo este error: No se puede encontrar myexename.savedstate. Supongo que se supone que debo pasar algo a los subs que publicaste, pero no sé qué. (por cierto, esta es una aplicación de consola) Agregué una referencia a System.Configuration.Install.dll y aquí está mi código:

Imports System.ComponentModel Imports System.Configuration.Install _ Public Class ApplicationInstaller Inherits Installer Public Overloads Overrides Sub Commit(ByVal savedState As IDictionary) '' Do some work on commit The_Sub_I_Want_To_Run() End Sub Public Overloads Overrides Sub Install(ByVal stateSaver As IDictionary) '' Do some work on install End Sub Public Overloads Overrides Sub Uninstall(ByVal savedState As IDictionary) '' Do some work on uninstall End Sub End Class

Yo no llamé eso. Nunca he usado la clase Installer antes. Podría estar haciendo algo muy novato aquí. De acuerdo con sus instrucciones, agregué el código que he pegado a continuación en el exe que quiero ejecutar durante mi instalación. Agregué el archivo exe a la carpeta de mi aplicación y luego lo agregué a la acción personalizada Confirmar. Ahora aquí está el código que ahora tengo en la fuente de mi exe que intento ejecutar:

_ Public Class ApplicationInstaller Inherits Installer Public Overloads Overrides Sub Commit(ByVal savedState As IDictionary) '' Do some work on commit The_Sub_I_Have_my_codein() MyBase.Commit(savedState) End Sub Public Overloads Overrides Sub Install(ByVal stateSaver As IDictionary) '' Do some work on install End Sub Public Overloads Overrides Sub Uninstall(ByVal savedState As IDictionary) '' Do some work on uninstall End Sub End Class

Hmmm ... En las propiedades del proyecto del programa, hice clic en "Firmar el ensamblado" y el error desapareció. Sin embargo, parece que el exe no ejecuta el código que yo quiero.


¿Estás llamando al método base?

public override void Commit(IDictionary savedState) { // Do some work on commit base.Commit(savedState); }


Conjunto

InstallerClass propiedad a ''falso''.