Как к приложению Windows Mobile Автоматического обновления

так что соблазн здесь заключается в том, чтобы вкладывать циклы ... но вы не хотите этого делать, конечно, не для N> 3 ...

В Python есть две приятные вещи, которые сделают этот довольно простой

  • фильтр
  • collection.Counter

.

from collections import Counter

s = open(somefile).read()
# now you have a string with contents of file.
l = s.split()
# now you have a list of words of all lengths
l_filtered = filter(lambda x: len(x)==n, l)
#now you have a filtered list of only words of len n
print (Counter(l_filtered))
#your answer as a dict like Counter object
8
задан ctacke 15 April 2009 в 22:59
поделиться

5 ответов

Ваше решение, как правило, правильное, но имеет несколько проблем.

  1. Вы не можете обновить себя. Вы должны закрыть и попросить обновить приложение, чтобы предотвратить проблему с совместным доступом к файлам. Обычно это выполняется с помощью специального приложения для обновления, которое вы запускаете. Он может быть целью значка приложения и, следовательно, выполнять обновления при каждом запуске, или он может запускаться с помощью пункта меню типа «проверить наличие обновлений». В любом случае, вы должны запустить его и убедиться, что само приложение не запущено.
  2. Как правило, рекомендуется создать некую резервную копию на случай поврежденной, прерванной установки
  3. . требовать оптовых обновлений всего. Это может быть не то, что вы хотите в конце (вы можете обновить только один файл,
9
ответ дан 5 December 2019 в 06:10
поделиться

Команда, в которой я работал, реализовала это, создав второе мобильное приложение (вне обновляемого приложения) в мобильные устройства, которые отвечали за загрузку и запуск CAB.

  • На каждой док-станции основное приложение определяло, нужно ли его обновлять с помощью вызова веб-службы.
  • Если его версия устарела, оно вызывает Приложение для обновления с URI новой версии для установки и выхода
  • Приложение для обновления загрузит новую CAB и выполнит установки / перезагрузки и изменения реестра соответствующим образом.

Это сработало для нас довольно хорошо.

2
ответ дан 5 December 2019 в 06:10
поделиться

Нет необходимости создавать специальное приложение для обновления, по крайней мере, на WM 6 с .netcf 3.5. Я загружаю файл .cab с помощью веб-службы, а затем запускаю новый процесс и вызываю wceload для автоматической установки cab. Это позаботится о том, чтобы закрыть мое работающее приложение, удалить его, а затем выполнить установку, как указано в Документы MSDN здесь

В Windows Mobile версии 5.0 и более поздних при использовании Wceload.exe для переустановки файла .cab программа Wceload.exe удаляет ранее установленную версию файла .cab перед установкой новой версии. Во время части удаления этого процесса Wceload.exe закрывает все запущенные в данный момент исполняемые файлы, которые были установлены на целевом устройстве с помощью файла .cab, в зависимости от их имени файла. Wceload.exe также закрывает все исполняемые файлы, являющиеся целью файловой операции, например перемещение или копирование. Чтобы закрыть исполняемый файл, Wceload.exe отправляет WM_CLOSE всем окнам верхнего уровня, принадлежащим процессу. Если процесс не завершается своевременно после получения сообщения WM_CLOSE, то Wceload.exe принудительно закрывает его, вызывая TerminateProcess. Wceload. exe не пытается закрыть исполняемые файлы, которые поставляются в образе времени выполнения на целевом устройстве.

У меня также есть cesetup.dll для дополнительной очистки файлов во время удаления.

Моя большая проблема заключается в том, что я не могу изменить папку для установки моего приложения при автоматической установке, и по умолчанию используется свойство% installDir% из моего файла .inf. И создание отдельного файла .cab для каждого устройства, которое требуется обновить, - не лучшее решение.

5
ответ дан 5 December 2019 в 06:10
поделиться

Я только что опубликовал WmAutoUpdate, платформу .NET C #, которая будет выполнять автоматические обновления в Compact Framework. Он находится в свободном доступе на Github: http://github.com/seboslaw/wmautoupdate

11
ответ дан 5 December 2019 в 06:10
поделиться

Вы правы. после wM5, 6 ... WCEload просто останавливает приложение, если оно установлено, поэтому вам не нужно останавливать его вручную. но вам необходимо установить обновление в автоматическом режиме, потому что в противном случае пользователь может отменить его, поэтому вам понадобится установщик silent cab. загрузите его с

http://cssoft.freehosting.net/website2/default.html

0
ответ дан 5 December 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: