ClickOnce, мое приложение вылетает Visual C # Express - PullRequest
1 голос
/ 30 августа 2010

Я заканчиваю работу над приложением C # и ищу программу установки ClickOnce.

Сейчас я просто хочу убедиться, что установщик работает и что я могу запустить exe без Visual Studio.

Поэтому я настроил свой проект так, чтобы он требовал установщика Windows и .NET 3.5 с пакетом обновления 1 (SP1), и приказал загрузить его у поставщика (я буду включать компоненты позже, но не для этого теста). Это просто базовая утилита, которая не требует обновлений, поэтому я отключаю обновления и приказываю использовать метод установки CD / DVD, так как я просто хочу запустить его локально. Когда я запускаю полученный файл setup.exe, я получаю приглашение на установку, и в окне «Установка и удаление программ» появляется MyApp. Но, как только установщик заканчивает работу, он вылетает с таким сообщением:

[MyApp] столкнулся с проблемой и нужно закрыть. Мы сожалеем о неудобство.

Это же сообщение появляется при попытке запустить .exe. Папки меню Пуск не создаются во время установки. Я попытался покончить с созданием установочного файла, поэтому он просто сгенерировал файл .application, но все равно получил ту же ошибку.

Я что-то упускаю из виду? Мое приложение компилируется в конфигурации выпуска и работает просто отлично. Разве ClickOnce просто не должен работать с обычными приложениями WinForms?

Этот вопрос: Сбой приложения WPF после публикации ClickOnce Звучит похоже на мою проблему, но я использую Windows Forms и, следовательно, не получаю исключение XAML. Он просто отказывается бежать.

1 Ответ

3 голосов
/ 30 августа 2010

Хорошее начало - добавить обработчик события AppDomain.UnhandledException . Это событие возникает, когда в вашем коде возникает исключение, которое не обрабатывается блоком try/catch (или перебрасывается и никогда не обрабатывается снова). Поведение .NET в этом состоянии заключается в том, чтобы закрыть приложение - с его точки зрения, существует сбойная ошибка.

В этом обработчике событий вы должны - как минимум - зарегистрировать ошибку так, чтобы она была записана до закрытия приложения. Это может быть очень рудиментарный MessageBox, показывающий содержимое ошибки, запись в текстовый файл или (предпочтительно) запись в обычное место ведения журнала.

...