CustomActionData no parece estar lleno o accesible por mi vbscript
-
22-07-2019 - |
Pregunta
Ok, esto me está volviendo loco.
Tengo una CA que necesita conocer la ruta de INSTALLDIR para editar un archivo XML.
Entonces, configuré una acción personalizada de propiedad de conjunto que establece una propiedad llamada RemoveAuthTypesNode en [INSTALLDIR]. Luego tengo un RemoveAuthTypesNode CA que se secuencia después de SetConfigFolder (una propiedad de conjunto que establece installdir en una ruta buscada del sistema) en la secuencia de instalación de ejecución, diferida en el contexto del sistema (tampoco funciona cuando solo se ejecuta diferido).
En el registro veo que RemoveAuthTypesNode está configurado:
MSI (c) (D4: CE) [16: 12: 05: 314]: CAMBIO DE PROPIEDAD: Agregar Propiedad RemoveAuthTypesNode. Sus el valor es 'C: \ Archivos de programa \ Microsoft SQL Servidor \ MSRS10.MSSQLSERVER \ Informes Servicios \ ReportServer \ '.
Los errores de acción personalizada:
Error 1720. Hay un problema con Este paquete de Windows Installer. UNA script requerido para esta instalación en completo no se pudo ejecutar. Contacto su personal de apoyo o paquete vendedor. Acción personalizada Error de script RemoveAuthTypesNode -2146827864, error de tiempo de ejecución de Microsoft VBScript: Objeto requerido: 'objXMLDOMNode' Línea 9, Columna 1, MSI (s) (78: CE) [16: 12: 23: 916]: Producto: Informes definidos por el usuario ASMI - Error 1720. Hay un problema con este paquete de Windows Installer. Un guión requerido para completar esta instalación No se pudo ejecutar. Contacta tu soporte vendedor de personal o paquetes. Personalizado script de acción RemoveAuthTypesNode error -2146827864, Microsoft VBScript error de tiempo de ejecución: objeto requerido: 'objXMLDOMNode' Línea 9, Columna 1,
Esto falla porque la ruta no es correcta, por lo que el objeto XMLDom nunca se carga. Sé esto porque si codifico la ruta, todo funciona bien.
Además, cuando busco en el registro CustomActionData, esperaba que estuviera allí como configurado.
Aquí está el código de la acción personalizada. El msgbox es solo para depurar. Siempre no muestra nada.
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
¿Qué estoy haciendo mal? Estoy seguro de que es algo simple estúpido. Ayuda muy apreciada.
Solución
La acción personalizada que establece la propiedad nombrada para la acción personalizada vbscript fue establecer una propiedad privada (no todo en mayúsculas). Por lo tanto, la acción personalizada de la propiedad set tuvo que secuenciarse en la secuencia Ejecutar en lugar de la secuencia de la interfaz de usuario. Una vez que hice este cambio, se recuperaron los datos correctos en el script.
Se espera que si he hecho una propiedad pública (todos los casos SUPERIORES) tendría que funcionar en la secuencia de la interfaz de usuario, sin embargo, no probé esa teoría.