Я создал приложение Compact Framework и использую WmAutoUpdate для развертывания новых версий на мобильных устройствах (http://www.sebastianvogelsang.com/2009/09/23/wmautoupdate-a-net-compact-framework-auto-update-library/). Кто-нибудь использовал это? Это круто, но у меня проблема.
Если я вызываю сбой приложения на полпути при обновлении, оно должно быть восстановлено путем копирования версии резервной копии обратно в основной каталог. Это не работает, потому что исполняемый файл «заблокирован» операционной системой, потому что он в настоящее время используется. Я могу убедиться, что это так, потому что я не могу удалить его с помощью Windows Explorer. Детали ошибки:
System.IO.IOException was unhandled
Message="IOException"
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.File.Move(String sourceFileName, String destFileName)
at WmAutoUpdate.Updater.assertPreviousUpdate()
at WmAutoUpdate.Updater..ctor(String url)
Ошибка возникает в этой строке в Updater.assertPreviousUpdate ():
File.Move(f, appPath + "\\" + getFilenameFromPath(f));
Коду удается обновить исполняемый файл приложения, когда ему разрешено нормально работать (я не знаю, как). Проблема в том, что он не работает при откате.
Cheer
Mark