2010-08-26 1 views
2

Прежде всего, когда я запускаю приложение обычно (дважды щелкнув по exe), он отлично работает: значок уведомления всегда появляется в системный лоток. Он также хорошо работает, когда приложение запускается в конце установки msi (Run exe after msi installation?).Значок уведомлений не всегда появляется в системном трее после настройки, но все еще функционирует

Однако, когда приложение запускается из msi, работающего в тихом режиме, значок уведомления не всегда появляется, но приложение является функциональным: Я могу получить доступ к контекстному меню с помощью сочетания клавиш. Я тестировал на трех компьютерах под управлением Windows XP, а коэффициент успеха - около 50%. Я также тестировал на Windows7: он отлично работает.

Я знаю, что есть некоторые проблемы с уведомляют значки во время запуска в Windows XP, но я не знаю, если это связанно (http://www.google.ca/search?hl=fr&q=notify+icon+not+appearing+Windows+XP&aq=f&aqi=&aql=&oq=&gs_rfai=

Итак, мне было интересно, если какие-либо из вас, ребята, когда-либо испытывали эта проблема. Как вы думаете, это ошибка в Windows XP? Или это связано с тем, кто запускает приложение (msiexec vs .exe)? Я не думаю, что это может быть ошибка в моем коде, поскольку он работает хорошо, когда я начинаю он должен быть указан напрямую.

+0

Я никогда не слышал о «тихом режиме». –

+0

@Hans, I * think * OP означает «тихий режим», который вы можете использовать при запуске MSI, т. Е. 'Msiexec/quiet' =) – Rob

+0

@Rob, зачем установщику нужен значок в трее? –

ответ

1

Вы должны понимать, что при запуске тикового режима (/ quiet/qn UILevel = 3), который не установлен в InstallUISequence, выполняется только процедура InstallExecuteSequence, поэтому вам нужно запланировать произвольное действие t o запускать в конце InstallExecuteSequence при бесшумном запуске, чтобы ваша программа C# выполнялась и помещалась в лоток.

Для тех, кто ставит под сомнение это требование, довольно нормально это делать. Будучи администратором SMS, я бы молча удалял пакеты, которые закрывали приложение в трее, удаляли старую версию, устанавливали новую версию и вернули приложение try. Все это без агента почти не замечало, что его никогда не хватало.

+0

+1 от меня - сценарий, который вы описали в своем втором абзаце, был тем, с которым я боролся (и терпеть неудачу!) Описал в своих комментариях вопрос OPs =) – Rob

+0

No prob. Я когда-то работал на крупную авиакомпанию, у которой были терминалы зеленого экрана, которые были в основном без гражданства. Мы однажды вытолкнули обновление программного обеспечения, которое было вытерто, перезагружено и даже запустило резервную копию программы, если она была запущена. Наконец, мы отправили текстовую команду на мэйнфрейм, который перекрасил экран. Они никогда не знали, что их поразило. :-) –

+0

Спасибо за ваш ответ Кристофер. На самом деле, у меня есть сценарий пост-сборки, который меняет мой MSI и добавляет строку в InstallExecuteSequence для запуска моего приложения в определенном состоянии (CLIENTUILEVEL = 2 ИЛИ CLIENTUILEVEL = 3). Я установил последовательность в -1 (). Как я уже сказал, приложение запускается, но значок уведомления не всегда отображается. –