Comment corriger l'échec d'une action personnalisée dans un MSI / projet d'installation
Question
Pour une action personnalisée, je suis mise à Nom à XmlPreprocess.exe (un utilitaire CodePlex)
et arguments à: / x: "[SETTINGSFILE]" /i:"[TARGETDIR]web.config »/ e: [ENVIRONMENTBUTTON] [CustomSettings]> [TARGETDIR] XmlPreProcess.log
SETTINGSFILE est censé provenir d'une page de formulaire personnalisé j'ajouté, et ENVIRONMENTBUTTON est la valeur d'un de mes boutons radio.
Y at-il moyen d'obtenir la redirection de travailler? Il ne crée pas le fichier .log. Est-il une autre façon de voir les résultats de l'action personnalisée? Comment puis-je confirmer même si elle a couru? Que faire si je voudrais voir ce que parms ont été envoyés à elle?
Mise à jour 3: - Pour plus de scénarios de ce que j'ai essayé, voir ici: http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId= 79454
Merci,
Neal
Mise à jour: Je viens d'écrire un quickie VBScript pour vérifier mes parms.
dim fso, oFile
set fso = Createobject("Scripting.FileSystemObject")
set oFile = fso.CreateTextFile("VBScriptOut.txt")
if WScript.Arguments.Count < 2 then
oFile.Writeline("Number of arguments was only = " & WScript.Arguments.Count)
else
oFile.WriteLine("SETTINGSFILE=" & WScript.Arguments.Item(0))
oFile.WriteLine("ENVIRONMENTBUTTON=" & WScript.Arguments.Item(1))
end if
oFile.close
Non VBScriptout.txt a été créé, donc je ne pense pas qu'il a même couru (donc je suppose le XmlPreprocess est même ne fonctionne pas non plus).
J'inclus le fichier InstalLVerification.vbs comme une action personnalisée dans « Installer ». Je mis la condition = True dans la fenêtre des propriétés. Je mis CustomActionData à: "[SETTINGSFILE]" [ENVIRONMENTBUTTON]
Mise à jour 2: Je réalisais maintenant état ne doit pas être « vrai ». Je soit vide dehors ou réglez-le sur « Non installé ».
Je reçois une erreur inexpliquée sur XmlPreprocess, et je ne peux pas obtenir le VBScript pour exécuter. J'ai essayé de courir aussi avec CScript64.exe.
La solution
Seul l'invite de commande (et d'autres outils occasionnels) utilisent le symbole plus grand que pour indiquer la redirection de sortie. Windows Installer appelle simplement l'API Win32 CreateProcess qui ne traite pas ce symbole. Ainsi, votre tentative de connexion les résultats ne fonctionnera pas. Peut-être que vous pouvez réécrire votre commande pour ressembler cmd.exe /c XmlPreprocess.exe /x ... > [TARGETDIR]XmlPreprocess.log
(certains supplémentaire peut être nécessaire de citer).
Pour des fins de débogage, vous pouvez généralement obtenir beaucoup plus d'informations en prenant un journal détaillé du processus d'installation. Il comprendra une liste des propriétés et des actions personnalisées il a lancé et leurs codes de retour. Je pense qu'il va même inclure la ligne de commande entièrement formatée transmise à l'application dans votre cas.
Comme vous dites dans Update 2, notez qu'une condition de True
signifie en fait de rechercher si une propriété du nom True
est défini. Si vous voulez quelque chose qui est toujours vrai, utilisez la valeur 1
.