FileNotFoundException иногда при запуске приложения - PullRequest
4 голосов
/ 04 марта 2010

для автоматического обновления моего приложения WPF, у меня есть такая стратегия:

  • (1) process.exe запускается
  • process.exe ищет обновление => есть обновление
  • process.exe делает копию самого себя => process_copy.exe
  • process.exe запуск process_copy.exe с параметрами "update"
  • process.exe завершает работу
  • (2) Запускается process_copy.exe
  • process_copy.exe, см. Параметры "update", загрузите обновление для process.exe
  • process_copy.exe запустите process.exe
  • process_copy.exe выходит
  • process.exe запускается

Обратите внимание, что мое приложение использует DLL.

эта стратегия работает, за исключением некоторых случаев (не каждый раз), когда приложение запускается при запуске в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run

Иногда происходит сбой в (2) с

System.IO.FileNotFoundException не обработан Сообщение = "Не удалось загрузить файл или сборку". ManagedWinapi, версия = 0.3.0.0, культура = нейтральная, PublicKeyToken = null 'или одна из ее зависимостей.

Я не понимаю, почему это может привести к сбою. Если он может начинаться с (1), почему он (иногда) не может начинаться с (2)?

У кого-нибудь есть объяснение?

Заранее спасибо за ответ

Ответы [ 3 ]

0 голосов
/ 06 марта 2010

Попробуйте использовать событие AppDomain.CurrentDomain.AssemblyResolve , чтобы узнать, где и где он ищет файл

0 голосов
/ 09 марта 2010

Finnaly, я интегрировал эту dll в свое приложение, так что у меня больше нет dll ... это ужасно, но работает

0 голосов
/ 06 марта 2010

Вариант 0: Знаете ли вы зависимости ManagedWinapi? Если нет, используйте Reflector, чтобы определить их. Может быть проблема с поиском одного из них?

Вариант 1: Попробуйте запустить ProcessMonitor, чтобы определить, что конкретно отсутствует в вашем приложении. («или одна из его зависимостей» - это может быть любое количество вещей.

Вариант 2: Это прерывистая проблема. Является ли ваша операция копирования асинхронной или вы абсолютно уверены, что «process_copy.exe» PLUS, какие дополнительные компоненты, которые вы копируете, были обновлены?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...