Come eseguire il debug fallimento di un'azione personalizzata in un progetto MSI / Setup
Domanda
Per un'azione personalizzata, sto impostando a Nome per XmlPreprocess.exe (un programma di utilità CodePlex)
e argomenti: / x: "[SETTINGSFILE]" /i:"[TARGETDIR]web.config"/ e: [ENVIRONMENTBUTTON] [CustomSettings]> [TARGETDIR] XmlPreProcess.log
SETTINGSFILE si suppone che sia proveniente da una pagina di modulo personalizzato ho aggiunto, e ENVIRONMENTBUTTON è il valore di uno dei miei pulsanti di opzione.
C'è un modo per ottenere il reindirizzamento a lavorare? Non è la creazione del file di log. C'è un altro modo per vedere i risultati dell'azione personalizzata? Come posso anche confermare se corresse? Che cosa succede se mi piacerebbe vedere cosa parms sono stati inviati ad esso?
Aggiornamento 3: - Per ulteriori scenari di quello che ho provato, vedere qui: http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId= 79454
Grazie,
Neal
Aggiornamento: Ho appena scritto una sveltina VBScript per verificare i miei 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 è stato creato, in modo da non penso ancora di corse (quindi la mia ipotesi è il XmlPreprocess non è nemmeno in esecuzione o).
Ho incluso il file InstalLVerification.vbs come un'azione personalizzata sotto la voce "Installa". Ho impostato la condizione = True nella finestra delle proprietà. Ho impostato CustomActionData: "[SETTINGSFILE]" [ENVIRONMENTBUTTON]
Aggiornamento 2: Ho capito ora Condizione non dovrebbe essere "True". Mi sia vuota fuori o impostarlo su "Non installato".
Ricevo un errore inspiegabile su XmlPreprocess, e non riesco a ottenere il VBScript per l'esecuzione. Ho provato a fare funzionare anche con CScript64.exe.
Soluzione
Solo il prompt dei comandi (e occasionali altri strumenti) utilizzano il simbolo maggiore di indicare reindirizzamento uscita. Di Windows Installer solo chiama l'API Win32 CreateProcess che non elaborare questo simbolo. Così il vostro tentativo di registrare i risultati non funzionerà. Forse si può riscrivere il vostro comando per assomigliare cmd.exe /c XmlPreprocess.exe /x ... > [TARGETDIR]XmlPreprocess.log
(può essere richiesto qualche extra citando).
Per scopi di debug, si può generalmente ottenere molte più informazioni prendendo un registro dettagliato del processo di installazione. Esso comprenderà un elenco di proprietà e di azioni personalizzate è lanciato ed i loro codici di ritorno. Penso che sarà anche includere la riga di comando completamente formattato trasmessa all'applicazione nel tuo caso.
Come si dice in Update 2, si noti che una condizione di True
significa in realtà per cercare se una proprietà del nome True
è definito. Se si desidera qualcosa che è sempre vero, utilizzare il valore di 1
.