2014-10-30 2 views
0

Мне нужно обновить dll с сайта в моем проекте WPF. Что касается обновления файла .exe или msi, все понятно. Но как насчет DLL? Я не знаю, с чего начать или как это должно выглядеть ... Я реализовал обновление exe через xml-файл - прочитал xml-файл с сервера, а если версия выше - загрузите эту новую версию. Что касается dlls - их много, они могут иметь новые версии или новые DLL вообще ... Итак, у меня есть вопрос вообще - КАК ПРОВЕРИТЬ ПРОВЕРКУ? (примеры оценены или просто теоретические ответы). И многие мелкие вопросы, такие как «Мне нужно прочитать xml-файл - как его автоматически генерировать» (написать все dllls не очень хорошо). Жду ваших советов.wpf AutoUpdate dlls?

+0

Я не вижу разницы между обновлением exe и обновлением dll. вы помещаете информацию о версии dll в один и тот же файл xml и загружаете dll, если новая версия найдена, как и exes. – kennyzx

+0

@kennyzx ok, и каков способ создания этого огромного xml? – Lili

ответ

0

Во-первых, рассмотрим ClickOnce deployment.

Если ClickOnce не подходит для вас (у него есть ограничения по сравнению с установщиками). Вы можете реализовать собственный механизм самообновления.

Обычно это делается автономной утилитой обновления (назовем ее update.exe), которая проверяет ваш сайт обновлений по расписанию.

Если вам необходимо развернуть новую версию приложения (с обновленными EXEs, DLLS и файлы данных), можно определить XML, что перечислить последнюю информацию о версии всех файлов,

<files> 
    <file name="foo1.exe" version="2.3.0.2" hash="23ac4544490cb3bac23ac4544490cb3bac" downloadurl="youwebsite.com/dl/v23/foo1.exe"/> 
    <file name="subdir/foo2.exe" version="5.2.1.1" hash="..." downloadurl="..." /> 
    <file name="bar.dll" version="1.3.0.2" hash="..." downloadurl="..." /> 
    <file name="subdir/bar2.dll" version="1.3.0.3" hash="..." downloadurl="..." /> 
</files> 

Когда запускается update.exe, он загружает и анализирует этот xml, чтобы определить, какие файлы необходимо обновить, и загрузить эти файлы с URL-адреса загрузки, проверить целостность файлов с хэш-значением и остановить приложение для замены исходных файлов , а затем перезапустите приложение.

Чтобы ответить на ваш вопрос о том, как создать этот огромный XML:

Конечно, не отредактированный вручную. Напишите утилиту, которая выполняет итерацию через все файлы в каталоге установки (последняя версия), для каждого файла, получает версию файла (используйте класс System.Version), размер файла (используйте класс System.IO.FileInfo), генерирует хеш-значение из содержимого файл (используйте что-то вроде System.Security.Cryptography.SHA256) и сформируйте hugh xml (используйте класс XDocument/XmlDocument).

+0

Хорошо, спасибо. Я постараюсь. и напишите позже о результатах – Lili