Имеет смысл из подробного следа .MSI. Я создал .MSI, используя VisualStudio 2008.
Вот предыстория того, что я пытаюсь сделать:
http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454
Цель - запустить программу под названием XmlPreprocess.exe, подобную этой:
xmlpreprocess.exe /x:"SettingsFileGenerator.xml "/i:"web.config" / e: QA / v
/ x: parm происходит из одной из моих форм пользовательского интерфейса, а значение / e: выбирается из четырех переключателей.
Я установил свойство "InstallerClass" в False,
и свойство "CustomActionData" для:
/ x: "[SETTINGSFILE]" /i:"[TARGETDIR]web.config "[CUSTOMSETTINGS] / e: [ENVIRONMENTBUTTON]
и я оставляю свойство "Аргументы" пустым.
Вот что говорит мне след. Похоже, мои пармы собираются в соответствующие места (я выбрал «QA» из переключателя). Ошибка та же, что и на экране графического интерфейса пользователя: « Программа, запущенная как часть установки, завершилась не так, как ожидалось. Обратитесь в службу поддержки или к поставщику пакета. » Я не уверен, что информация 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 / i "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 и вызвать ее, затем перехватить вывод и прочитать его ???