好的,这让我发疯了。
我有一个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
我做错了什么?我确定这是一个简单的愚蠢。非常感谢。
答案 0 :(得分:0)
设置为vbscript自定义操作命名的属性的自定义操作是设置私有属性(不是全部大写)。因此,必须在执行序列而不是UI序列中对set属性自定义操作进行排序。完成此更改后,脚本中将检索到正确的数据。
如果我已经创建了一个公共属性(所有UPPER案例),它可能会在UI序列中工作,但是,我没有测试该理论。