VBScript将无法从MSI文件正确执行

时间:2012-06-04 13:41:33

标签: vbscript windows-installer setup-project

我有一个我写的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安装和部署包(这是客户希望使用的,我不能使用任何其他东西)。有什么想法吗?

2 个答案:

答案 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 ,您可以配置为从合并模块指向文件,甚至不从包中指向。

通过这种方式,您可以更轻松地创建更清晰的安装程序包,而不必担心自定义操作失败的可能性。