如何从MSI调用批处理文件

时间:2009-09-25 23:08:45

标签: batch-file windows-installer

我有一个msi安装程序,需要调用几个批处理文件才能完成安装过程。批处理文件将额外文件从安装程序复制到几个目录,然后修改其中几个目录的权限。我们希望继续使用批处理文件,因为我们的开发计划中没有剩余时间。我没有使用WIX。

如果可能的话,我想捕获批处理的输出并将其写入日志文件。

发现下面是我用来尝试从自定义操作运行批处理文件的代码。它打开一个cmd窗口,运行一段时间但似乎永远不会完成。如果我直接从命令提示符运行相同的批处理文件,它们就可以工作。

//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

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我相信你需要创建一个自定义动作。请参阅this question

答案 1 :(得分:0)

许多防病毒程序可能会在安装过程中停止执行.BAT文件,您应该使用标准Windows Installer功能或作为C ++自定义操作来实现此目的