37

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

问题是如何*.bat在安装过程中运行文件?

4

4 回答 4

63

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

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

这是你要做的:

  1. 创建一个安装项目并像往常一样进行配置,包括您将放置批处理文件的子目录(如果您不想将它放在子目录中,可以直接将它放在应用程序文件夹中)。
  2. 在“文件系统”视图中(在解决方案资源管理器中右键单击项目->查看->文件系统),添加要执行的批处理文件cmd.exe(C:\Windows\System32\cmd.exe)
  3. 打开“自定义操作”视图(在解决方案资源管理器中右键单击项目->查看->自定义操作)
  4. 右键单击“提交”并选择“添加自定义操作”
  5. 导航到并选择 cmd.exe。
  6. 打开新创建的自定义操作的属性面板。
  7. 从 Arguments 属性中删除 /Commit。
  8. 输入:/c "[TARGETDIR]subdirectoryname\batchfile.bat"在 Arguments 属性中,其中 subdirectoryname 应替换为子目录的名称(如果您像我一样将批处理文件放在子目录中...如果没有,则值应该是/c "[TARGETDIR]batchfile.bat")和 batchfile.bat 应该是您的批处理文件的文件名。

就是这样。一旦安装过程的其余部分完成,现在将执行批处理文件。

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

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

然后,针对 cmd.exe 的自定义操作的参数值将是

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

希望对某人有所帮助!

于 2011-06-08T22:27:35.637 回答
7

达到相同结果的另一种方法是将 .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)

那是我设置自定义操作时:

在此处输入图像描述

我希望这可以帮助你!

于 2014-10-23T07:12:04.313 回答
5
  1. 检查这篇文章(文章已弃用),即使它在 VB.NET 中,它也适用于 C#。最重要的部分是(转换为 C#)创建一个新的类库,并添加一个具有以下内容的新安装程序类: 如文章中所述,您可以创建一个新的自定义操作,并引用您刚刚创建的项目。

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

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

  4. 构建安装程序项目。

于 2012-07-06T08:11:42.510 回答
0

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

于 2010-05-14T12:01:03.130 回答