CustomActionData non sembra essere popolato o accessibile dal mio vbscript
-
22-07-2019 - |
Domanda
Ok, questo mi sta facendo impazzire.
Ho una CA che deve conoscere il percorso di INSTALLDIR per modificare un file XML.
Quindi, ho impostato un'azione personalizzata set proprietà che imposta una proprietà denominata RemoveAuthTypesNode su [INSTALLDIR]. Quindi ho una CA RemoveAuthTypesNode che è sequenziata dopo SetConfigFolder (una proprietà set che imposta installdir su un percorso cercato dal sistema) nella sequenza di installazione di Execute, differita nel contesto di sistema (non funziona solo con Deferred Exec).
Nel registro vedo che RemoveAuthTypesNode è impostato:
MSI (c) (D4: EC) [16: 12: 05: 314]: CAMBIAMENTO IMMOBILE: Aggiunta Proprietà RemoveAuthTypesNode. Suo il valore è 'C: \ Programmi \ Microsoft SQL Server \ MSRS10.MSSQLSERVER \ Reporting Services \ ReportServer \'.
Gli errori di azione personalizzati:
Errore 1720. Si è verificato un problema con questo pacchetto di Windows Installer. UN script richiesto per questa installazione su non è stato possibile eseguire complete. Contatto il personale di supporto o il pacchetto fornitore. Azione personalizzata Errore dello script RemoveAuthTypesNode -2146827864, Errore di runtime di Microsoft VBScript: Oggetto richiesto: 'objXMLDOMNode' Riga 9, colonna 1, MSI (s) (78: CE) [16: 12: 23: 916]: Prodotto: Rapporti definiti dall'utente ASMI - Errore 1720. Si è verificato un problema con questo pacchetto di Windows Installer. Un copione necessario per completare l'installazione non può essere eseguito. Contatta il tuo supporto personale o venditore di pacchetti. costume azione Script RemoveAuthTypesNode errore -2146827864, Microsoft VBScript errore di runtime: oggetto richiesto: 'objXMLDOMNode' Riga 9, colonna 1,
Non funziona perché il percorso non è corretto, quindi l'oggetto XMLDom non viene mai caricato. Lo so perché se hardcode il percorso tutto funziona bene.
Inoltre, quando cerco CustomActionData nel registro, mi aspettavo che fosse presente come impostato.
Ecco il codice dell'azione personalizzata. Msgbox è solo per il debug. Non mostra sempre nulla.
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
Cosa sto facendo di sbagliato? Sono sicuro che sia qualcosa di semplice stupido. Aiuto molto apprezzato.
Soluzione
L'azione personalizzata che imposta la proprietà denominata per l'azione personalizzata vbscript stava impostando una proprietà privata (non tutta in maiuscolo). Quindi, l'azione personalizzata della proprietà set doveva essere sequenziata nella sequenza Execute anziché nella sequenza UI. Dopo aver apportato questa modifica, i dati corretti venivano recuperati nello script.
Si prevede che se avessi creato una proprietà pubblica (tutto il caso UPPER) avrebbe funzionato nella sequenza dell'interfaccia utente, tuttavia non ho testato questa teoria.