我有一个我写的VBScript需要从MSI文件执行。当我在Windows中独立运行脚本时,脚本会正确执行,但是,当我从安装程序运行它时,我会收到以下错误,如日志文件中所示:
Microsoft VBScript runtime error: object required: 'WScript', Line 3, Column 2
脚本如下:
sub shell(cmd)
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("""" & cmd & """")
Set objShell = Nothing
end sub
set objFSO = CreateObject("Scripting.FileSystemObject")
strcmd32 = "C:\Path\PathToExecutable.exe"
strcmd64 = "C:\Path\PathToExecutable64.exe"
if (objFSO.FileExists(strcmd32)) then
shell(strcmd32)
else
shell(strcmd64)
end if
set objFSO = Nothing
如前所述,如果我在安装程序的上下文之外运行它,则此脚本运行正常。安装项目类型是VS2010安装和部署包(这是客户希望使用的,我不能使用任何其他东西)。有什么想法吗?
答案 0 :(得分:9)
在“shell”子句中,我在调用“CreateObject()”之前从第一行删除了WScript。修改后的行现在看起来像这样:
'Note the absent reference to WScript on the call to CreateObject()
Set objShell = CreateObject("WScript.Shell")
答案 1 :(得分:3)
如果您只有一个简单的项目包含一些合并模块和应用程序的文件,您可以使用更好的工具Advanced Installer。根据您的需要,您可以使用免费版本,即创建“简单”项目类型。添加合并模块和文件不会超过一分钟。
现在,您可以轻松完成自定义操作,创建可以转到文件和文件夹页面的快捷方式,使用上下文菜单选项或工具栏,您可以创建external shortcut ,您可以配置为从合并模块指向文件,甚至不从包中指向。
通过这种方式,您可以更轻松地创建更清晰的安装程序包,而不必担心自定义操作失败的可能性。