我的vbscript似乎没有填充或访问CustomActionData

时间:2009-10-29 21:36:18

标签: vbscript installer windows-installer installshield custom-action

好的,这让我发疯了。

我有一个CA,需要知道INSTALLDIR的路径才能编辑XML文件。

因此,我设置了一个set属性自定义操作,将名为RemoveAuthTypesNode的属性设置为[INSTALLDIR]。然后我有一个RemoveAuthTypesNode CA,它在SetConfigFolder(一个将installdir设置为系统搜索路径的set属性)之后排序,在安装执行序列中,在系统上下文中延迟(在Deferred Exec中也不起作用)。

在日志中我看到RemoveAuthTypesNode已设置:

  

MSI(c)(D4:EC)[16:12:05:314]:   物业变更:添加   RemoveAuthTypesNode属性。它的   值是'C:\ Program Files \ Microsoft   SQL   服务器\ MSRS10.MSSQLSERVER \报告   服务\的ReportServer \”。

自定义操作错误:

  

错误1720.有一个问题   此Windows Installer程序包。一个   此安装所需的脚本   完成无法运行。联系   您的支持人员或包裹   供应商。自定义动作   RemoveAuthTypesNode脚本错误   -2146827864,Microsoft VBScript运行时错误:所需对象:   'objXMLDOMNode'第9行,第1列,MSI   (s)(78:EC)[16:12:23:916]:产品:   ASMI用户定义的报告 - 错误   1720.此Windows Installer程序包存在问题。一个脚本   完成此安装所需   无法运行。联系您的支持   人员或包装供应商。习惯   action RemoveAuthTypesNode脚本   错误-2146827864,Microsoft VBScript   运行时错误:所需对象:   'objXMLDOMNode'第9行,第1列,

这是失败的,因为路径不正确所以XMLDom对象永远不会加载。我知道这一点,因为如果我对路径进行硬编码,一切正常。

此外,当我在日志中搜索CustomActionData时,我预计它会在那里设置。

以下是自定义操作的代码。 msgbox仅用于调试。它总是什么都不显示。

strConfigFile = session.Property("CustomActionData") & "rsreportserver.config"
MsgBox session.Property("CustomActionData")
Set xDoc = CreateObject("Microsoft.XMLDOM")

xDoc.async = False
xDoc.Load(strConfigFile)

set objXMLDOMNode = xDoc.selectSingleNode("//Configuration/Authentication/AuthenticationTypes")
set objParentNode = objXMLDOMNode.parentNode
objParentNode.removeChild(objXMLDOMNode)

xDoc.save(strConfigFile)

Set xDoc = Nothing

我做错了什么?我确定这是一个简单的愚蠢。非常感谢。

1 个答案:

答案 0 :(得分:0)

设置为vbscript自定义操作命名的属性的自定义操作是设置私有属性(不是全部大写)。因此,必须在执行序列而不是UI序列中对set属性自定义操作进行排序。完成此更改后,脚本中将检索到正确的数据。

如果我已经创建了一个公共属性(所有UPPER案例),它可能会在UI序列中工作,但是,我没有测试该理论。