如何在安装过程中运行“.bat”文件?

时间:2010-03-10 06:30:23

标签: batch-file visual-studio-2008 installation setup-project custom-action

在安装项目中,可以接受“.exe,.dll,.js,.vbs”等可执行文件,但无法在自定义操作中运行.bat文件。

问题是如何在安装期间运行*.bat文件?

4 个答案:

答案 0 :(得分:59)

好吧,经过大量的搜索和反复试验,我已经解决了这个问题。我不确定这是不是最好的方法,但它确实有用。

这是一个场景:我想通过Visual Studio安装项目部署一个应用程序。除了我的应用程序文件,我想在目标目录中创建一个包含批处理(.bat)文件的子目录。我希望这个文件在安装过程结束时运行。

这是你做的:

  1. 创建一个安装项目并按照惯例进行配置,包括放置批处理文件的子目录(如果不希望它放在子目录中,可以直接将它放在Application Folder中)。 / LI>
  2. 在“文件系统”视图中(右键单击解决方案资源管理器中的项目 - >查看 - >文件系统),添加要执行的批处理文件 cmd.exe (C:\ Windows \ System32下\ cmd.exe的)
  3. 打开“自定义操作”视图(在解决方案资源管理器中右键单击项目 - >查看 - >自定义操作)
  4. 右键单击“提交”,然后选择“添加自定义操作”
  5. 导航并选择cmd.exe。
  6. 打开新创建的自定义操作的属性面板。
  7. 从Arguments属性中删除/提交。
  8. 在Arguments属性中输入: /c "[TARGETDIR]subdirectoryname\batchfile.bat" ,其中subirectoryname应替换为您的子目录的名称(如果您将批处理文件放在像我这样的子目录中...如果你没有,值应为/c "[TARGETDIR]batchfile.bat"),batchfile.bat应该是批处理文件的文件名。
  9. 就是这样。现在,一旦完成安装过程的其余部分,就会执行批处理文件。

    为了清楚起见,这是一个例子:

    我的批处理文件: blah.bat
    我的子目录: mydir

    我的自定义操作目标cmd.exe的参数值将为

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

    希望能帮助别人!

答案 1 :(得分:5)

另一种达到相同结果的方法是将.vbs文件放在运行相应.bat文件的自定义操作中。 以下代码是我放入安装应用程序文件夹中的“RunRegisterComponents.vbs”。当然,我将[TARGETDIR]作为.vbs参数放在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)

就像我设置自定义操作一样:

enter image description here

我希望这可以帮到你!

答案 2 :(得分:4)

  1. 查看本文(文章已弃用),即使它在VB.NET中也适用于C#。最重要的部分是(翻译为C#)创建一个新的类库,并添加一个包含以下内容的新安装程序类:如文章中所述,您可以创建一个新的自定义操作,并引用刚刚创建的项目。 / p>

    override void Commit(IDictionary savedState)
    {
         base.Commit(savedState);
         System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
    }
    
  2. 现在我们将批处理文件添加到您的安装程序项目中。创建一个安装项目并按照惯例进行配置,包括放置批处理文件的子目录(如果不希望它放在子目录中,可以直接将它放在Application Folder中)。

  3. 在“文件系统”视图中(右键单击解决方案资源管理器中的项目 - >查看 - >文件系统),添加要执行的批处理文件。

  4. 构建安装程序项目。

答案 3 :(得分:0)

如果您尝试在安装过程中运行具有相对路径的批处理文件,那么肯定会失败。这是因为批处理文件将考虑运行安装程序的目录,而不考虑安装文件的位置。使用将批处理文件复制到临时目录的安装程序构建器。