作者:秀珍冠秋晓雯 | 来源:互联网 | 2023-05-21 11:32
我正在使用Installshield 2014和2011。正在使用主要升级和自动构建脚本来处理构建。InstallShield是独立的构建版本。对彼此而言。
现在,Windows 2003服务器上的Installshield 2011一切正常。我可以使用自动化界面打开一个项目,更改产品代码(用于主要升级),然后在构建安装程序之前将其保存。
这样的代码在vbs文件中如下所示:
Dim oISM, oGUID
Set oGUID = CreateObject("InstallShield.GUID")
Set oISM = CreateObject("IswiAuto17.ISWiProject")
oISM.OpenProject strInstallShieldProjectFile
oISM.ProductCode = "{" & oGUID.CreateGUID( ) & "}"
oISM.SaveProject : oISM.CloseProject : set oISM = Nothing
现在,我们已经升级到Windows 2012服务器和InstallShield2014。我已经仔细检查过,根据InstallShield,唯一需要的更改是版本号(从17更改为21)。
但是现在没有任何效果。如果我取出代码并将其放入自己的vbs文件中进行测试并运行,我将得到以下信息:
ActiveX组件无法创建对象:“ InstallShield.GUID”
在谷歌上看,我看到这是在64位模式下运行的。。。。我在32位模式下运行cmd提示符。
http://helpnet.flexerasoftware.com/installshield18helplib/AutomationInterface64Bit.htm
我尝试使用以下脚本调用脚本:%WINDIR%\ SYSWOW64 \ cmd.exe / c cscript
如此处建议的那样:
如何在64位计算机上以32位模式运行Vbscript?
和其他地方。这没有用,因为我遇到了同样的错误。
我尝试删除该行,因为我确定可以用另一种方式创建Guid,然后重新运行它。
然后在尝试创建项目时得到了此消息:未知的运行时错误:'CreateObject'
谷歌再次出现,我检查了:https :
//community.flexerasoftware.com/showthread.php?189788-Automation-error
和其他人。我尝试确保使用regsvr32注册了dll,并说它成功。但是在重新运行后,它给出了相同的错误。
我尝试直接处理InstallShield文档中的命令,以确保没有拼写错误,但又出现了相同的错误。
我什至尝试按此处所述切换“ sw”的大小写:
运行Vbscript时Installshield Automation失败,错误是无法创建对象
同样,同样的错误。
我还尝试了切换到Powershell,因为Powershell更容易调试和阅读。
powershell代码很简单,如下所示:
$oIsm = new-object -comobject IswiAuto21.ISWiProject
$oISM.OpenProject("$file")
$oISM.ProductCode = "{" + [guid]::NewGuid() + "}"
$oISM.SaveProject(); $oISM.CloseProject(); $oISM = $null
但是,尽管这些人说应该这样做,但是这也不起作用:https
:
//community.flexerasoftware.com/showthread.php? 190769-Automation-using-Powershell http://blogs.flexerasoftware.com/installtalk/2011/01/getting -started-with-installshield-automation-and-powershell.html
当我使用32位Powershell时,出现以下错误:
new-object:由于以下错误,无法从IClassFactory创建具有CLSID {78D393F9-76E3-438C-9CAB-6664EF5FE1F2}的COM组件实例:800a801d HRESULT异常:0x800A801D。
如果只运行vbs而没有cmd提示符,我还会在弹出框中看到800A801D的错误。
我怎样才能解决这个问题?我想使用Powershell,但此时VBS修复也会有所帮助。我已经尝试了所有我能想到的东西,谷歌说我做得正确(32位powershell / cmd,注册dll,创建对象等)。
1> Christopher ..:
您是否安装了自动化界面?通常,它是一项可选功能,在安装InstallShield时会设置为不存在。