Как вы делаете установщик обновлений с NSIS? - PullRequest
9 голосов
/ 13 июня 2009

В настоящее время у меня есть проект с установщиком, который я сделал с NSIS, но я хотел бы получить обновление до новых версий, в котором есть только измененные файлы и будет отображаться журнал изменений. Целевая платформа - окна. Какие методы / предложения вы должны сделать это?

Ответы [ 5 ]

14 голосов
/ 27 мая 2010

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

NSIS - это, по сути, программа, которая работает и делает то, что вам нужно, тогда как установщик типа установщика Windows вынуждает вас разделить ваше приложение на функции и компоненты, которыми может управлять служба msi установщика Windows. MSI будет отслеживать, например, какие версии продуктов вы установили, будет ли повторный запуск программы установки в режиме обслуживания, разрешено ли вам устанавливать 2 продукта разных версий, можно ли применить исправление к определенной версии продукта или любой другой вопрос, касающийся обновлений и установок.

В основном, большинство запрашиваемых вами материалов будет доступно сразу после установки технологии установщика Windows. Принимая во внимание, что если вы используете NSIS (который не использует технологию установщика Windows), вам придется реализовать все это самостоятельно.

В качестве примера приведен довольно полный сборщик инсталляторов AdvancedInstaller (http://www.advancedinstaller.com/), который звучит так, как вы хотите. В качестве альтернативы, если вы хотите провести остаток своей жизни в траловых форумах и новостных группах, тогда существует продукт с открытым исходным кодом под названием WiX, который делает нечто подобное;)

3 голосов
/ 12 ноября 2010

Несмотря на мой предыдущий комментарий, я написал установщик на 5000 строк, используя NSIS с 13 пользовательскими страницами. Я даже посмотрел на исправления, и это немного взломать. Главный совет - удостоверьтесь, что вы исправляете версию, которую, по вашему мнению, исправляете, и затем используйте один из доступных плагинов исправления.

Существует несколько технологий исправлений, которые сравнивают файлы и создают файлы изменений исправлений, а также код NSIS, необходимый для их «установки». Я обнаружил, что NSIS Patch Gen сделал то, что я хотел, очень хорошо с наименьшим количеством хлопот. Документация немного тонкая, но как только вы это выясните, вы подумаете: «О, да».

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

http://sourceforge.net/projects/nsispatchgen/

2 голосов
/ 16 июня 2009

Одним из возможных способов было бы сохранить файл XML на вашем сервере загрузок, который имеет каждую выпущенную версию и список файлов, которые менялись для каждого выпуска. Установщик запишет раздел реестра при установке версии установленных файлов.

Затем при обновлении установщик загружает и анализирует файл XML и находит все узлы с номерами версий, которые превышают установленные на данный момент. Все файлы отображаются в текстовом поле на странице установщика, и после подтверждения пользователем установщик загружает все файлы, а затем обновляет реестр до последней версии.

1 голос
/ 08 апреля 2012

вы знакомы с cURL? http://www.shininglightpro.com/products/Win32OpenSSL.html http://curl.haxx.se/download.html#openssl

он загрузит любой протокол, и вы можете использовать его для загрузки ваших файлов. это приложение командной строки.

в установщике, запланируйте программу, которая должна сначала проверить, работает ли основная программа или нет, и завершить, если она работает, если нет, вызывает curl, чтобы загрузить пакетный файл с вашего сайта с обновлениями, затем запускает пакетный файл.
загружаемый пакетный файл обновляет приложение, загружая правильные файлы с помощью curl. процесс должен запускаться каждые 2 недели или раз в месяц, в зависимости от того, как часто вы обновляетесь.

удаляемая часть установщика должна быть способна удалить все части рассматриваемого приложения, включая любые обновления. это можно сделать, удалив все файлы из этого подкаталога программных файлов.

RMDir /r /REBOOTOK '$INSTDIR'
RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder"
Delete '$SMPROGRAMS\$StartMenuFolder\gpl3license.lnk'
Delete '$SMPROGRAMS\$StartMenuFolder\readme.lnk'
Delete '$SMPROGRAMS\$StartMenuFolder\${PRODUCT_TITLE}.lnk'
DeleteRegKey HKCU "Software\Your major subkey\${PRODUCT_NAME}"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
DeleteRegKey /ifempty HKCU "Software\${PRODUCT_NAME}"

PRODUCT_NAME - это определение, которое я сделал, потому что я использую эти файлы nsi как шаблон. это только часть раздела удаления файла установщика.

0 голосов
/ 24 мая 2011

Некоторые компиляторы, такие как Delphi, вносят множество изменений в конечный исполняемый файл, даже если вы изменили небольшую часть кода.

Итак, сначала вы должны посмотреть, стоит ли это исправлять.

Другое соображение - это исправление само по себе. Исправление может быть заблокировано каким-либо Антивирусным программным обеспечением, особенно в некоторых системных папках.

и, наконец, размер данных добавочного исправления может превысить исходные файлы.

Исходя из вышеперечисленных вопросов, я не предлагаю вам исправления. Вместо этого используйте полные установщики

...