【发布时间】:2010-12-11 10:17:34
【问题描述】:
好吧,这快把我逼疯了。
我有一个 CA,它需要知道 INSTALLDIR 的路径才能编辑 XML 文件。
因此,我设置了一个设置属性自定义操作,将名为 RemoveAuthTypesNode 的属性设置为 [INSTALLDIR]。然后我有一个 RemoveAuthTypesNode CA,它在安装执行序列中的 SetConfigFolder(将 installdir 设置为系统搜索路径的集合属性)之后排序,在系统上下文中延迟(在延迟执行时也不起作用)。
在日志中我看到设置了 RemoveAuthTypesNode:
MSI (c) (D4:EC) [16:12:05:314]: 物业变更:添加 RemoveAuthTypesNode 属性。它的 值为 'C:\Program Files\Microsoft SQL 服务器\MSRS10.MSSQLSERVER\报告 服务\ReportServer\'。
自定义操作错误:
错误 1720。有问题 此 Windows 安装程序包。一种 此安装所需的脚本 完成无法运行。接触 您的支持人员或包裹 小贩。自定义动作 RemoveAuthTypesNode 脚本错误 -2146827864,Microsoft VBScript 运行时错误:需要对象: 'objXMLDOMNode' 第 9 行,第 1 列,MSI (s) (78:EC) [16:12:23:916]:产品: ASMI 用户定义报告 -- 错误 1720.此 Windows 安装程序包有问题。一个脚本 此安装需要完成 无法运行。联系您的支持 人员或包装供应商。风俗 动作 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
我做错了什么?我敢肯定,这很简单,很愚蠢。非常感谢您的帮助。
【问题讨论】:
-
您可以使用各种按钮进行格式化,人们更喜欢阅读格式化的帖子。
标签: vbscript installation windows-installer installshield custom-action