CustomActionData, кажется, не заполняется или недоступен моим VBScript
Хорошо, это сводит меня с ума.
У меня есть CA, который должен знать путь INSTALLDIR для редактирования файла XML.
Итак, я установил настраиваемое действие свойства set, которое устанавливает свойство с именем RemoveAuthTypesNode в [INSTALLDIR]. Затем у меня есть CA RemoveAuthTypesNode, который секвенируется после SetConfigFolder (свойство set, которое устанавливает installdir для пути поиска в системе) в последовательности Install Execute, Deferred в системном контексте (не работает, когда также просто Deferred Exec).
В журнале я вижу, что RemoveAuthTypesNode установлен:
MSI (c) (D4: EC) [16: 12: 05: 314]: ИЗМЕНЕНИЕ ИМУЩЕСТВА: добавление свойства RemoveAuthTypesNode. Его значение равно "C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\".
Ошибки пользовательских действий:
Ошибка 1720. Есть проблема с этим пакетом установщика Windows. Не удалось запустить сценарий, необходимый для завершения этой установки. Обратитесь в службу поддержки или к поставщику пакета. Настраиваемое действие Ошибка сценария RemoveAuthTypesNode -2146827864, ошибка времени выполнения Microsoft VBScript: требуется объект: 'objXMLDOMNode' Строка 9, столбец 1, MSI (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
Что я делаю неправильно? Я уверен, что это просто глупо. Помощь высоко ценится.
1 ответ
Пользовательское действие, которое устанавливает свойство, названное для пользовательского действия vbscript, устанавливало частное свойство (не все в верхнем регистре). Таким образом, настраиваемое действие свойства set должно быть упорядочено в последовательности Execute, а не в последовательности UI. Как только я внес это изменение, в сценарии были получены правильные данные.
Ожидается, что если я сделаю публичное свойство (все в верхнем случае), оно будет работать в последовательности пользовательского интерфейса, однако я не проверял эту теорию.