mam*_*ius 31 installation custom-action batch-file setup-project visual-studio-2008
在安装项目中,可以接受".exe,.dll,.js,.vbs"等可执行文件,但无法.bat
在自定义操作中运行文件.
问题是如何*.bat
在安装过程中运行文件?
Bri*_*ahy 59
好吧,经过大量的搜索和反复试验,我已经解决了这个问题.我不确定这是不是最好的方法,但它确实有效.
这是场景:我想通过Visual Studio安装项目部署一个应用程序.除了我的应用程序文件,我想在目标目录中创建一个包含批处理(.bat)文件的子目录.我希望这个文件在安装过程结束时运行.
这是你做的:
/c "[TARGETDIR]subdirectoryname\batchfile.bat"
在Arguments属性中输入:where子目录名应该替换为子目录的名称(如果你将批处理文件放在像我这样的子目录中......如果你没有,那么值应该是/c "[TARGETDIR]batchfile.bat"
)和batchfile.bat应该是批处理文件的文件名.而已.现在,一旦完成其余的安装过程,就会执行批处理文件.
以下是为清晰起见的示例:
我的批处理文件: blah.bat
我的子目录:mydir
然后,我的自定义操作目标cmd.exe的参数值将是
/c "[TARGETDIR]mydir\blah.bat"
希望有人帮助!
检查本文(不推荐使用该文章),即使该文章在VB.NET中也适用于C#。最重要的部分是(转换为C#)创建一个新的类库,并添加一个具有以下内容的新的Installer类:如本文所述,您可以随后引用刚刚创建的项目来创建新的自定义操作。
override void Commit(IDictionary savedState)
{
base.Commit(savedState);
System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
}
Run Code Online (Sandbox Code Playgroud)现在,我们将批处理文件添加到您的安装程序项目中。创建一个安装项目并按照通常的方式进行配置,包括放置批处理文件的子目录(如果不希望将其放置在子目录中,则可以直接将其放置在“应用程序文件夹”中)。
在“文件系统”视图中(在“解决方案资源管理器”->“视图”->“文件系统”中右键单击项目),添加要执行的批处理文件。
生成安装程序项目。
小智 5
另一种达到相同结果的方法是将.vbs文件放在运行相应.bat文件的自定义操作中.以下代码是我放入安装应用程序文件夹中的"RunRegisterComponents.vbs".当然我在Visual Studio属性窗口中将[TARGETDIR]作为.vbs参数.
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)
Run Code Online (Sandbox Code Playgroud)
就像我设置自定义操作一样:
我希望这可以帮到你!