在安装项目中,诸如".exe,.dll,.js,.vbs“之类的可执行文件是可接受的,但无法在自定义操作中运行.bat文件。
问题是如何在安装过程中运行*.bat文件?
发布于 2011-06-09 06:27:36
好了,经过多次的搜索和试验,我已经解决了这个问题。我不确定这是不是最好的方法,但它是有效的。
这是一个场景:我有一个应用程序,我想通过Visual Studio安装项目进行部署。除了我的应用程序文件之外,我还想在目标目录中创建一个包含批处理(.bat)文件的子目录。我希望在安装过程结束时运行此文件。
下面是你要做的:
应用程序创建一个安装项目,并像往常一样进行配置,包括放置批处理文件的子目录(如果您不想将批处理文件放在subdirectory).
/c "[TARGETDIR]subdirectoryname\batchfile.bat"中为新创建的自定义cmd.exe./c "[TARGETDIR]batchfile.bat"),batchfile.bat应为批处理文件的文件名。就这样。完成安装过程的其余部分后,将立即执行批处理文件。
为了清楚起见,这里有一个例子:
我的批处理文件:blah.bat
我的子目录:mydir
然后,针对cmd.exe的自定义操作的参数值将为
/c "[TARGETDIR]mydir\blah.bat"
希望这对某些人有帮助!
发布于 2014-10-23 15:12:04
实现相同结果的另一种方法是将一个.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)这就是我设置自定义操作的方式:

我希望这能对你有所帮助!
发布于 2012-07-06 16:11:43
override void Commit(IDictionary savedState) { base.Commit(savedState);System.Diagnostics.Process.Start("myApp.bat","your bat arguments");}
https://stackoverflow.com/questions/2414956
复制相似问题