2011-07-27 23 views
7

Estoy trabajando para un instalador personalizado desarrollado en Visual Studio 2008 (Instalación & Implementación> Proyecto de instalación) para un proyecto de C#. Me gustaría ejecutar un archivo por lotes (* .bat) después de que la instalación haya finalizado. ¿Cómo puedo hacer eso?¿Cómo ejecutar una secuencia de comandos por lotes una vez finalizada la instalación?

+0

Me pregunto también por qué el instalador de VS me permite usarlo solo dll exe js vbs solamente. – Cynede

Respuesta

6

Deberá ampliar la clase Installer y anular el evento Committed.

Aquí hay un example. Espero que puedas encontrar cómo ejecutar un archivo .bat en C#.

[RunInstaller(true)] 
public class ServiceInstaller : Installer 
{ 
    string strServiceName = "MyServiceName"; 

    public ServiceInstaller() 
    { 
     // ............. 

     this.Committed += new InstallEventHandler(ServiceInstaller_Committed); 
    } 

    void ServiceInstaller_Committed(object sender, InstallEventArgs e) 
    { 
     // Run your batch file 
    } 
} 

Custom Install Action es otra opción. Here es un hilo similar para eso.

1

Puede ejecutar un archivo por lotes usando cmd.exe, de todos modos es lo que ejecuta los archivos por lotes.

Comézalo de esta manera: cmd.exe /c <path-to-batch>\batchfile.bat.

+0

en la configuración para 2010: no hay forma de cambiar la ruta de origen de cmd.exe. Esto falla cuando la ubicación xp de cmd.exe está en c: \ winnt \ system32, pero Windows 7 está ubicado en c: \ windows \ system32 estoy perplejo – pithhelmet

+0

@pithhelmet '% comspec%' la variable de entorno almacena la ruta completa a 'cmd.exe'. '% windir%' apunta al directorio de Windows, luego '% windir% \ system32 \ cmd.exe' apunta correctamente a' cmd.exe'. Funcionará incluso si Windows no está en la unidad 'C:'. Dado que 'system32' aparece en la variable de entorno' PATH', puede omitir la ruta completa a 'cmd.exe'. –

Cuestiones relacionadas