Come eseguire un file “.bat” durante l’installazione?

In un progetto di installazione i file eseguibili come “.exe, .dll, .js, .vbs” sono accettabili ma non è ansible eseguire un file .bat in un’azione personalizzata.

La domanda è come eseguire i file *.bat durante l’installazione?

Bene, dopo molte ricerche e tentativi ed errori ho risolto questo. Non sono sicuro se questo è il modo migliore, ma funziona.

Ecco lo scenario: ho un’applicazione che vorrei distribuire tramite un progetto di installazione di Visual Studio. Oltre ai miei file di applicazione, vorrei creare una sottodirectory nella directory di destinazione che contenga un file batch (.bat). Vorrei che questo file fosse eseguito alla fine del processo di installazione.

Ecco cosa fai:

  1. Crea un progetto di installazione e configuralo come faresti normalmente, inclusa la sottodirectory in cui posizionerai il tuo file batch (puoi metterlo direttamente nella cartella dell’applicazione direttamente se non lo vuoi in una sottodirectory).
  2. Nella vista “File System” (fare clic con il tasto destro del mouse sul progetto in Solution Explorer-> View-> File System), aggiungere il file batch che si desidera eseguire e cmd.exe (C: \ Windows \ System32 \ cmd.exe)
  3. Aprire la vista “Azioni personalizzate” (fare clic con il tasto destro del mouse sul progetto in Esplora soluzioni-> Visualizza-> Azioni personalizzate)
  4. Fai clic con il tasto destro del mouse su “Conferma” e seleziona “Aggiungi azione personalizzata”
  5. Passare a e selezionare cmd.exe.
  6. Aprire il pannello delle proprietà per l’azione personalizzata appena creata.
  7. Elimina / Conferma dalla proprietà Argomenti.
  8. Immettere: /c "[TARGETDIR]subdirectoryname\batchfile.bat" nella proprietà Arguments, dove subdirectoryname deve essere sostituito dal nome della sottodirectory (se si inserisce il file batch in una sottodirectory come ho fatto io … se non si è t, il valore dovrebbe essere /c "[TARGETDIR]batchfile.bat" ) e batchfile.bat dovrebbe essere il nome file del file batch.

Questo è tutto. Il file batch verrà ora eseguito una volta completato il resto del processo di installazione.

Ecco un esempio per motivi di chiarezza:

Il mio file batch: blah.bat
La mia sottodirectory: mydir

Sarebbe quindi il valore degli argomenti per il mio cmd.exe di targeting azioni personalizzate

/c "[TARGETDIR]mydir\blah.bat"

Spero che aiuti qualcuno!

Un altro modo per raggiungere lo stesso risultato è inserire un file .vbs in azioni personalizzate che eseguano il file .bat corrispondente. Il seguente codice è “RunRegisterComponents.vbs” inserito nella cartella dell’applicazione di installazione. Ovviamente inserisco [TARGETDIR] come parametro .vbs nella finestra delle proprietà di Visual Studio.

 dim WshShell Set WshShell = CreateObject("WScript.Shell") ' Read the "CustomActionData" property holding the install directory. dim programDir programDir= property("CustomActionData") ' Make the batch full file name and parameter commandString = chr(34) & programDir & "RegisterComponents.bat" & chr(34) & " " & chr(34) & programDir& chr(34) ' Set the current directory WshShell.CurrentDirectory = programDir ' Run batch. ret = WshShell.Run (commandString, 0, 0) 

Questo è come ho impostato le mie azioni personalizzate:

inserisci la descrizione dell'immagine qui

Spero che ciò possa aiutarti!

  1. Controlla questo articolo (l’articolo è deprecato), anche se è in VB.NET si applica anche a C #. La parte più importante è (tradotta in C #) creando una nuova libreria di classi e aggiungendo una nuova class di installazione con il seguente contenuto: Come indicato nell’articolo, è ansible creare una nuova azione personalizzata con un riferimento al progetto appena creato.

     override void Commit(IDictionary savedState) { base.Commit(savedState); System.Diagnostics.Process.Start("myApp.bat","your bat arguments"); } 
  2. Ora stiamo aggiungendo il file batch al tuo progetto di installazione. Crea un progetto di installazione e configuralo come faresti normalmente, inclusa la sottodirectory in cui posizionerai il tuo file batch (puoi metterlo direttamente nella cartella dell’applicazione direttamente se non lo vuoi in una sottodirectory).

  3. Nella vista “File System” (fare clic con il tasto destro del mouse sul progetto in Solution Explorer-> View-> File System), aggiungere il file batch che si desidera eseguire.

  4. Costruisci il progetto di installazione.

Se si sta tentando di eseguire un file batch con percorsi relativi durante il processo di installazione, ciò fallirà di sicuro. Questo perché il file batch prenderà in considerazione la directory in cui è in esecuzione il programma di installazione e non dove sono stati installati i file. Utilizzare i programmi di installazione che copiano i file batch nella directory temporanea.