CustomActionData, похоже, не заполнен или недоступен для моего vbscript

Хорошо, это сводит меня с ума.

У меня есть центр сертификации, которому необходимо знать путь к INSTALLDIR для редактирования XML-файла.

Итак, я установил настраиваемое действие set property, которое устанавливает для свойства с именем RemoveAuthTypesNode значение [INSTALLDIR]. Затем у меня есть ЦС RemoveAuthTypesNode, который упорядочен после SetConfigFolder (свойство set, которое устанавливает installdir на путь, поиск которого выполняется системой) в последовательности выполнения установки, отложенной в системном контексте (не работает, когда просто отложенное выполнение).

В журнале вижу, что 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

Что я делаю неправильно? Я уверен, что это что-то просто глупое. Помощь очень ценится.


person PilotBob    schedule 29.10.2009    source источник
comment
Вы можете использовать различные кнопки для форматирования, люди предпочитают читать отформатированные сообщения.   -  person Fionnuala    schedule 30.10.2009


Ответы (1)


Настраиваемое действие, которое устанавливает свойство, названное для настраиваемого действия vbscript, устанавливало частное свойство (не все в верхнем регистре). Таким образом, настраиваемое действие свойства set должно быть упорядочено в последовательности Execute, а не в последовательности пользовательского интерфейса. Как только я внес это изменение, в скрипт были извлечены правильные данные.

Ожидается, что если я сделаю общедоступное свойство (все ВЕРХНИЙ регистр), оно будет работать в последовательности пользовательского интерфейса, однако я не проверял эту теорию.

person PilotBob    schedule 30.10.2009