0

Исходя из многозначной трассы .MSI. Я создал .msi с помощью VisualStudio 2008.Понимание смысла .MSI подробный след - запуск CustomAction

Вот фон, на то, что я пытаюсь сделать: http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454

Цель состоит в том, чтобы запустить программу под названием XmlPreprocess.exe похожа на это: xmlpreprocess.exe /x:"SettingsFileGenerator.xml "/i:"web.config"/e: QA/v

The/x: parm происходит из одной из форм моего интерфейса пользователя, а значение/e: происходит от выбора из четырех переключателей.

Я установил свойство "InstallerClass" на Ложное, и имущества "CustomActionData" в: /х: "[SettingsFile]" /i:"[TARGETDIR]web.config»[CUSTOMSETTINGS]/е: [ENVIRONMENTBUTTON] и я оставляю свойство «Аргументы» пустым.

Вот что говорит мне трасса. Похоже, мои пармы идут в соответствующие места (я выбрал «QA» из кнопки Radio). Ошибка та же, что и на экране графического интерфейса - «Программа, запущенная как часть настройки, не завершилась так, как ожидалось. Обратитесь к вашему персоналу службы поддержки или поставщику пакетов.« Я не уверен, что ErrorIcon информация - это просто шум, или если это актуально.

MSI (s) (A4:58) [10:46:09:130]: Executing op: CustomActionSchedule(Action=_78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2,ActionType=3090,Source=C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe,,CustomActionData=/x:"c:\Source\TFBIC.RCT.BizTalk\TFBIC.RCT.BizTalk.Deployment\EnvironmentSettings\SettingsFileGenerator.xml" /i:"C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\web.config" /e:QA) 
MSI (s) (A4:58) [10:46:09:728]: Note: 1: 1722 2: _78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2 3: C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe 4: 
MSI (s) (A4:58) [10:46:09:728]: Note: 1: 2262 2: Error 3: -2147287038 
MSI (c) (E0:C8) [10:46:09:763]: Note: 1: 2262 2: Error 3: -2147287038 
DEBUG: Error 2835: The control ErrorIcon was not found on dialog ErrorDialog 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2835. The arguments are: ErrorIcon, ErrorDialog, 
**Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.** Action _78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2, location: C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe, command: 
MSI (s) (A4:58) [10:46:11:630]: Note: 1: 2262 2: Error 3: -2147287038 
MSI (s) (A4:58) [10:46:11:630]: Product: TFBIC.RCT.WCFWebServices -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action _78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2, location: C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe, command: 

Action ended 10:46:11: InstallExecute. Return value 3. 
MSI (s) (A4:58) [10:46:11:633]: User policy value 'DisableRollback' is 0 
MSI (s) (A4:58) [10:46:11:633]: Machine policy value 'DisableRollback' is 0 

Примечание: получил вышеупомянутый след, делая это:

Msiexec/я "TFBIC.RCT.WCFWebServicesSetup.msi"/L * V "C: \ Logs \ WebServiceInstall.log"

Обновление: основываясь на комментариях ниже - XmlPreprocess.exe (мой CustomAction) возвращает ненулевой код возврата. Итак, как я могу отладить это? Мне нужно увидеть результаты, которые обычно находятся в окне команд.

Обновление 01/07: Похоже, что отлаживать невозможно, не видя выхода программы - это то, что мне действительно нужно. Когда установщик выдает ошибку, я могу видеть файлы в этом каталоге, пока не нажмем кнопку «ОК», и он удалит их все. Я иду в командную строку, введите xmlpreprocess.exe, затем скопируйте/вставьте одну и ту же строку из журнала выше "/x:"c:\Source\TFBIC.RCT.BizTalk\TFBIC.RCT.BizTalk.Deployment\EnvironmentSettings\SettingsFileGenerator .xml "/i:"C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\web.config"/e: QA ", и он работает нормально.

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

Два потенциальных отсутствующие файлы не являются. 1) сам web.config (это есть) 2) наименование файла пользователь вводит в

Насколько я могу судить, нет способ проверки того, что пользователь напечатал действительное имя файла, и в диалоговых окнах установки нет «сборщика файлов». Верный? или нет?

Так что, даже если у пользователя было неправильное имя файла, мне нужно дать ему лучшее сообщение, чем «Программа, запущенная как часть настройки, не завершилась так, как ожидалось. Обратитесь к вашему персоналу службы поддержки или поставщику пакетов."

Может быть, я должен написать свою собственную C# обертки для XmlPreprocess и назвать его, а затем перехватить вывод и читать это ???

ответ

2

как в вашем previous question где я предложил использовать cmd.exe /C XmlPreProcess.exe ... для перенаправления, для отладки вы можете попробовать с /K вместо /C. Тогда любой выход должен стоять, и вы сможете работать в контексте MSI во время ошибки.

Я действительно подозреваю, что проблема заключается в планировании вашего пользовательского действия. Если это действие немедленно, запланировано до InstallFinalize и предназначено для работы с файлом, который вы будете устанавливать, он будет запущен до того, как файлы будут установлены в ожидаемое местоположение. Правильное исправление для этого, как правило, запускает скрипт action (также называемый отложенным), поэтому, планируя его между InstallFiles и InstallFinalize, он фактически выполняется в этом соответствующем месте.

Что касается предоставления более совершенных ошибок для ваших конечных пользователей или предоставления им возможности для поиска файла, они оба будут выполнять пользовательские действия и, вероятно, должны быть DLL-действиями (действия EXE могут обеспечивать только обратную связь с пропуском/сбоем). Будет вашим выбором: лучше (или проще) предоставить диалог просмотра или проверить путь, который предоставляет пользователь. Я не уверен, сколько из этого вы можете сделать в проекте установщика Visual Studio (что я и предполагаю, что вы используете ваши теги).

+0

Спасибо, забыл о предыдущем вопросе, который я опубликовал, потому что я думал, что этот след станет панацеей. Вероятно, я попытаюсь использовать альтернативный подход, включающий веб-службы в BizTalk Deployment Framework (BTDF), поскольку они будут развернуты на том же сервере одновременно. Раньше я делал некоторые инсталляторы с NSI, но это первая «причудливая» установка, которую я пробовал с помощью встроенных инструментов Microsoft Visual Studio (не слишком впечатлен). – NealWalters

+0

Для тех, кто в мире BizTalk, обсудим, что я буду пытаться: http://biztalkdeployment.codeplex.com/WorkItem/View.aspx?WorkItemId=5675 – NealWalters

+0

Исправление, это NSIS (а не NSI). http://nsis.sourceforge.net/Main_Page – NealWalters

1

Да, ErrorIcon это просто шум и может быть проигнорировано. Я в процесс удаления этого «шума» от моей MSI в настоящее время, так что я могу правильно отладить.

ошибка была вызвана пользовательским действием возвращающего об ошибках Windows 1722

Running «чистый HELPMSG 1722» в ЦМДЕ оперативные доходы

The RPC server is unavailable. 

Так что команда делает что-то, что либо зависит от локальной службы сервера RPC (не запущено, что нечетно, потому что это важно для Windows, я думаю), либо удаленный сервер сообщает об этом.

+1

У вас есть правильная ошибка из журнала, но неправильная интерпретация. В сообщениях об ошибках установщика Windows (http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx) 1722 как показано в журнале. Это означает, что программа вернула ненулевой код ошибки. Либо программа сообщает об ошибке, либо ее код возврата должен игнорироваться. –

+0

Спасибо. Код ненулевого возврата имеет больше смысла. Но я все еще не в состоянии отладить его? Мне нужно увидеть вывод того, что обычно отображается в окне команд. Я надеялся, что, возможно, это будет следствием. Это всего лишь XmlPreprocess.exe (предоставляется CodePlex). Он массирует файл web.config. Естественно, я могу запустить его вне установки, и он работает. Конечно, это может вызвать ошибки, но мне нужно знать, что это за ошибки. Как я могу это сделать? – NealWalters

+0

OK, другой пойдите. Ошибка Win32 обычно там где-то, и я думаю, что это номер -2147xxxx. Поэтому введите в calc (или скопируйте/вставьте), а затем переключитесь на hex. Игнорируйте все ведущие символы FFFF, так как это связано с битом знака. У вас должен быть номер 80030002, который доступен для Google. В поисках этого, похоже, что простая ошибка не найдена. Я могу ошибаться, но это похоже. Попробуйте запустить procmon в одно и то же время, чтобы увидеть, какие файлы могут отсутствовать, или скопируйте содержимое MSI в цель вручную и запустите его с консоли. –

Смежные вопросы