Как отладить сбой пользовательского действия в проекте MSI / Setup - PullRequest
1 голос
/ 04 января 2010

Для настраиваемого действия я устанавливаю в качестве имени XmlPreprocess.exe (утилита CodePlex)

и аргументы для: / x: "[SETTINGSFILE]" /i:"[TARGETDIR]web.config "/ e: [ENVIRONMENTBUTTON] [CUSTOMSETTINGS]> [TARGETDIR] XmlPreProcess.log

SETTINGSFILE должен исходить из страницы пользовательской формы, которую я добавил, и ENVIRONMENTBUTTON - это значение одной из моих радиокнопок.

Есть ли способ заставить работать редирект? Это не создание файла .log. Есть ли другой способ увидеть результаты пользовательского действия? Как я могу даже подтвердить, если он работал? Что если я хотел бы посмотреть, какие пармы были отправлены на него?

Обновление 3: - Дополнительные сценарии того, что я пробовал, см. Здесь: http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454

Спасибо

Нил

Обновление: Я просто написал VBScript, чтобы проверить мои пармы.

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

Файл VBScriptout.txt не был создан, поэтому я не думаю, что он даже работал (поэтому я предполагаю, что XmlPreprocess даже не запущен).

Я включил файл InstalLVerification.vbs в качестве настраиваемого действия в разделе «Установить». Я установил условие = True в окне свойств. Я установил для CustomActionData значение: «[SETTINGSFILE]» [КНОПКА ОКРУЖАЮЩЕЙ СРЕДЫ]

Обновление 2: Теперь я понял, что условие не должно быть "True". Я либо очищаю его, либо устанавливаю «Не установлено».

Я получаю необъяснимую ошибку в XmlPreprocess и не могу запустить VBScript. Я попытался запустить его также с CScript64.exe.

1 Ответ

1 голос
/ 05 января 2010

Только командная строка (и иногда другие инструменты) используют символ «больше» для указания перенаправления вывода. Установщик Windows просто вызывает Win32 CreateProcess API, который не обрабатывает этот символ. Таким образом, ваша попытка записать результаты не будет работать. Возможно, вы можете переписать вашу команду так, чтобы она выглядела как cmd.exe /c XmlPreprocess.exe /x ... > [TARGETDIR]XmlPreprocess.log (может потребоваться дополнительное цитирование).

В целях отладки вы можете получить гораздо больше информации, ведя подробный журнал процесса установки. Он будет содержать список свойств, а также пользовательских действий и их кодов возврата. Я думаю, что он даже будет включать в себя полностью отформатированную командную строку, передаваемую приложению в вашем случае.

Как вы сказали в обновлении 2, обратите внимание, что условие True на самом деле означает поиск определения свойства свойства True. Если вы хотите что-то, что всегда верно, используйте значение 1.

...