CustomActionData ne semble pas être rempli ou accessible par mon vbscript
-
22-07-2019 - |
Question
Ok, ça me rend fou.
J'ai une autorité de certification qui doit connaître le chemin de INSTALLDIR pour modifier un fichier XML.
J'ai donc configuré une action personnalisée pour définir une propriété qui définit une propriété appelée RemoveAuthTypesNode sur [INSTALLDIR]. Ensuite, j'ai une autorité de certification RemoveAuthTypesNode qui est séquencée après SetConfigFolder (une propriété set qui définit installdir sur un chemin recherché du système) dans la séquence d'installation, d'exécution, différée dans le contexte système (ne fonctionne pas uniquement avec Exec différé).
Dans le journal, je constate que RemoveAuthTypesNode est défini:
MSI (c) (D4: EC) [16: 12: 05: 314]: CHANGEMENT DE PROPRIÉTÉ: Ajout Propriété RemoveAuthTypesNode. Ses la valeur est 'C: \ Program Files \ Microsoft SQL Serveur \ MSRS10.MSSQLSERVER \ Reporting Services \ ReportServer \ '.
Les erreurs d'action personnalisée:
Erreur 1720. Il y a un problème avec ce package Windows Installer. UNE script requis pour cette installation complete n'a pas pu être exécuté. Contact votre personnel de support ou package vendeur. Action personnalisée Erreur de script RemoveAuthTypesNode -2146827864, erreur d'exécution Microsoft VBScript: Objet requis: 'objXMLDOMNode' ligne 9, colonne 1, MSI (s) (78: CE) [16: 12: 23: 916]: Produit: Rapports définis par l'utilisateur ASMI - Erreur 1720.Il y a un problème avec ce package Windows Installer. Un script requis pour cette installation à compléter ne pouvait pas être exécuté. Contactez votre support personnel ou fournisseur de colis. Douane action script RemoveAuthTypesNode erreur -2146827864, Microsoft VBScript erreur d'exécution: objet requis: 'objXMLDOMNode', ligne 9, colonne 1,
Cela échoue parce que le chemin n'est pas correct et que l'objet XMLDom ne se charge jamais. Je le sais parce que si je code le chemin, tout se passera bien.
En outre, lorsque je recherche CustomActionData dans le journal, je m'attendais à ce qu'il soit défini ici.
Voici le code de l'action personnalisée. La msgbox est juste pour le débogage. Il n’affiche toujours rien.
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'est-ce que je fais mal? Je suis sûr que c'est quelque chose de simple et stupide. Une aide grandement appréciée.
La solution
L'action personnalisée qui définit la propriété nommée pour l'action personnalisée vbscript consistait à définir une propriété privée (pas toutes les majuscules). Ainsi, l'action personnalisée de la propriété set a dû être séquencée dans la séquence Execute plutôt que dans la séquence UI. Une fois cette modification effectuée, les données correctes ont été récupérées dans le script.
On s'attend à ce que si j'ai créé une propriété publique (dans tous les cas UPPER), le travail se fasse dans la séquence de l'interface utilisateur; toutefois, je n'ai pas testé cette théorie.