Comment faire pour exécuter un ".fichier bat lors de l'installation?

Dans un projet d'Installation les fichiers exécutables comme ".EXE. , DLL. , js , .vbs" sont acceptables, mais il est impossible d'exécuter un .bat fichier dans une action personnalisée.

la question Est de savoir comment exécuter le *.bat fichiers pendant l'installation?

30
demandé sur Hakam Fostok 2010-03-10 09:30:22

4 réponses

eh Bien, après beaucoup de recherches et d'essais et d'erreurs, j'ai réglé ce problème. Je ne sais pas si c'est la meilleure façon, mais il fonctionne.

voici le scénario: j'ai une application que je voudrais déployer via un projet de configuration de Visual Studio. En plus de mes fichiers d'application, je voudrais créer un sous-répertoire dans le répertoire cible qui contient un lot (.chauve-souris) fichier. Je voudrais à ce fichier pour exécuter à la fin du processus d'installation.

Voici ce que vous faire:

  1. créer un projet d'installation et configurer comme vous le feriez normalement, y compris le sous-répertoire dans lequel vous placerez votre fichier batch (vous pouvez simplement le placer dans le dossier de L'Application directement si vous ne le voulez pas dans un sous-répertoire).
  2. dans la vue" système de fichiers " (clic droit sur le projet dans L'Explorateur de solutions->Vue->Système de fichiers), ajouter le fichier de lot que vous voulez exécuter et cmd.exe (C:\Windows\System32\cmd.exe)
  3. Ouvrir le "Des Actions personnalisées" (clic droit sur le projet dans l'Explorateur de solutions->Affichage->Actions Personnalisées)
  4. cliquez avec le bouton droit de la souris sur "Commit" et choisissez "Add Custom Action"
  5. Naviguez et sélectionnez cmd.EXE.
  6. ouvrir le panneau de propriétés pour l'action personnalisée nouvellement créée.
  7. Supprimer /Validation de la propriété Arguments.
  8. Entrée: /c "[TARGETDIR]subdirectoryname\batchfile.bat" dans la propriété Arguments, où subdirectoryname doit être remplacé par le nom de votre sous-répertoire (si vous placez le fichier de commandes dans un sous-répertoire comme je l'ai fait... si vous ne l'avez pas fait, la valeur devrait être /c "[TARGETDIR]batchfile.bat") et le fichier batch.chauve-souris doit être le nom de fichier de votre fichier de commandes.

C'est ça. Le fichier batch sera maintenant exécuté une fois le reste du processus d'installation terminé.

Voici un exemple pour plus de clarté:

Mon fichier batch: bla.chauve-souris

Mon sous-répertoire: mydir

la valeur des Arguments pour mon action personnalisée ciblant cmd.exe serait alors

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

L'espoir qui aide quelqu'un!

56
répondu Brian Mulcahy 2011-06-09 21:57:07

Un autre moyen d'atteindre le même résultat est de mettre un .fichier vbs dans des actions personnalisées qui exécute le correspondant .le fichier bat. Le code suivant est le " RunRegisterComponents.vbs " j'ai mis dans le dossier d'application setup. Bien sûr, je mets [TARGETDIR] as .paramètre vbs dans la fenêtre de propriété 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)

C'est comme je mets mes actions personnalisées:

enter image description here

j'espère que cela peut vous aider!

5
répondu Massimo 2016-12-12 13:13:10
  1. vérifier cet article( l'article est déprécié), même s'il est dans VB.NET cela s'applique aussi à C#. La partie la plus importante est (traduit en C#) la création d'une nouvelle Bibliothèque de Classe, et l'ajout d'une nouvelle Classe d'installation avec le contenu suivant: Comme indiqué dans l'article, vous pouvez créer une nouvelle action personnalisée avec une référence à votre projet.

    override void Commit(IDictionary savedState)
    {
         base.Commit(savedState);
         System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
    }
    
  2. maintenant nous ajoutons le fichier batch à votre projet d'installation. Créer un projet de configuration et configurez comme vous le feriez normalement, y compris le sous-répertoire dans lequel vous placerez votre fichier batch (vous pouvez simplement le placer directement dans le dossier de L'Application si vous ne le voulez pas dans un sous-répertoire).

  3. dans la vue" système de fichiers " (clic droit sur le projet dans L'Explorateur de solutions->Vue->Système de fichiers), ajouter le fichier de lot que vous voulez exécuter.

  4. construisez le projet d'installateur.

4
répondu Y P 2013-04-30 09:58:56

si vous essayez d'exécuter un fichier batch qui a des chemins relatifs pendant le processus d'installation, cela échouera à coup sûr. C'est parce que le fichier batch tiendra compte du répertoire où l'installateur est en cours d'exécution, et non de l'endroit où les fichiers ont été installés. Utilisez les constructeurs d'installateurs qui copient les fichiers par lots dans le répertoire temporaire.

0
répondu gomugomuno 2010-05-14 12:01:03