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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top