Вопрос

Для настраиваемого действия я устанавливаю имя для 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 на:"[ФАЙЛ НАСТРОЙКИ]" [КНОПКА ОКРУЖЕНИЯ]

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top