2009-09-25 10 views
2

J'ai un programme d'installation msi qui doit appeler quelques fichiers batch pour terminer la procédure d'installation. Le fichier de commandes copie des fichiers supplémentaires du programme d'installation dans quelques répertoires, puis modifie les autorisations sur plusieurs de ces répertoires. Nous voulons continuer à utiliser les fichiers batch car il ne reste pas beaucoup de temps dans notre planning de développement. Je n'utilise pas WIX.Comment appeler un fichier batch à partir d'un fichier MSI

Si possible, je voudrais capturer la sortie du lot comme il se passe et l'écrire dans un fichier journal.

Ci-dessous le code que j'utilise pour essayer d'exécuter le fichier de commandes à partir d'une action personnalisée. Il ouvre une fenêtre cmd, court pendant un moment mais ne semble jamais finir. Si j'exécute les mêmes fichiers batch directement depuis l'invite de commande, ils fonctionnent.

//Set the environment to the directory containing the bat files 

ProcessStartInfo info = new ProcessStartInfo(batch); 
info.WindowStyle = ProcessWindowStyle.Hidden; 
info.UseShellExecute = false; 
info.RedirectStandardError = true; 
info.RedirectStandardOutput = true; 
if (!string.IsNullOrEmpty(argument)) 
    info.Arguments = argument; 

Process process = new Process(); 
process.StartInfo = info; 
process.Start(); 

// Capture the standard error and standard output 

Qu'est-ce que je fais mal?

+0

action personnalisée C++ Transforme le problème que j'avais été un partie du processus d'enregistrement. Si aucun message de journal n'était écrit, le processus de lecture bloquerait le programme d'installation. C'était clairement mauvais et a rendu ma vie triste. – smaclell

Répondre

2

Je crois que vous devrez créer une action personnalisée. Voir this question.

+0

Je suppose que je dois juste travailler plus dur pour le faire fonctionner. Merci pour votre réponse. – smaclell

0

De nombreux programmes anti-virus peuvent arrêter l'exécution des fichiers .bat lors d'un processus d'installation, vous devriez vraiment faire cela en utilisant la fonctionnalité standard de Windows Installer ou comme

Questions connexes