我需要在Windows安装程序项目(标准OOTB VS 2008安装程序项目-vdproj)中执行批处理文件作为卸载过程的一部分.无法直接从安装程序项目中的自定义操作执行bat文件,因此我编写了一个快速的vbs脚本来调用所需的bat文件.
vbs代码:
Set WshShell = WScript.CreateObject( "WScript.Shell" )
command = "uninstall-windows-serivce.bat"
msgbox command
WshShell.Run ("cmd /C " & """" & command & """")
Set WshShell = Nothing
Run Code Online (Sandbox Code Playgroud)
当此脚本独立于卸载运行时,它可以完美地运行.但是,当作为卸载的一部分运行时,它不会执行bat文件(但会显示消息框,因此我知道调用了vbs文件).没有报告错误(至少我可以告诉).为什么此脚本不能作为"卸载自定义操作"的一部分工作
如果我创建一个名为temp.bat的批处理脚本(例如),其中包含:
exit /b 1
Run Code Online (Sandbox Code Playgroud)
当我以各种方式运行它时,我的32位XP系统与64位XP系统的行为不同.
在32位:
> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
0
Run Code Online (Sandbox Code Playgroud)
在64位:
> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
1
Run Code Online (Sandbox Code Playgroud)
我搜索了cmd.exe选项,但我无法找到任何控制它如何从批处理脚本传播错误级别信息的选项.在这一点上,我无法找到任何合理的解释.