Delphi: Как вы автоматически обновляете свои приложения? [закрыто]

Это не поддерживается в текущей версии v2.0 mongoimport, но она должна появиться в ближайшее время. Вы можете проверить билет JIRA здесь, запланированный на v2.1:

До тех пор, если вы можете перевести свои CSV-данные в JSON, вы можете использовать mongoimport --type json для импорта вложенных данных.

37
задан Jason Plank 3 August 2011 в 19:04
поделиться

10 ответов

Несколько лет назад я записал простой инструмент, который запущен вместо реальной программы, проверок на обновления, загружает и устанавливает их (если кто-либо доступен), и наконец запускает реальное приложение.

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

необходимо решить, как ли целевая аудитория, может предполагаться, работает на учетных записях продвинутого пользователя или администратора, или необходимо ли будет иметь дело с вышеупомянутыми проблемами. С Vista вещи уже стали значительно более твердыми.

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

13
ответ дан mghie 3 August 2011 в 19:04
поделиться

Я использую Синапс стандартные программы GetHTTP для возврата определенного ресурса, и, если найдено тогда проверяют по локальной системе, чтобы видеть, требуется ли обновление. Раз так тогда ресурс говорит мне, какая страница перейти к запуску и я бросаю URL в оболочку, выполняются так, пользователи предпочли, чтобы браузер был отображен.

Большую часть времени загрузка является программой установки, созданной InnoSetup, который обновляет пользовательскую систему и базу данных к последней версии. Когда новое "заплаченное" обновление необходимо, я тогда отправляю пользователя в "форму" обновления покупки. Мои веб-ресурсы являются ASP-страницами, таким образом, я могу перенаправить к различному ресурсу на основе потребительского номера версии.

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

7
ответ дан skamradt 3 August 2011 в 19:04
поделиться

Что когда-либо схема, которую Вы используете, может быть удобно знать, что можно на самом деле переименовать выполнение .exe файл. Поэтому переименуйте файл, копию в новых хороших работах файла. И в следующий раз, когда кто-то запускает программу, они запустят новую версию. Это, конечно, очень удобно в среде, куда многие пользователи выполняют тот же .exe файл, как в случаях сервера/сетевого ресурса Citrix/терминала.

18
ответ дан Tom 3 August 2011 в 19:04
поделиться

Обычно мы используем сторонний инструмент. Но в некоторых ситуациях это не было применимо, таким образом, я создал собственное решение, которое было довольно стандартным:

  • Получают xml (или любой другой формат) с информацией об обновлении
  • , Если более новые файлы публикуются, загрузите и установите их.
4
ответ дан Toon Krijthe 3 August 2011 в 19:04
поделиться

Я создал свое собственное решение также на основе Инди для загрузки и http://sourceforge.net/projects/makeupdate/ для исправления файла. Перед этим я использовал и попробовал несколько коммерческих инструментов, но никто не делал точно, в чем я нуждался.

6
ответ дан 3 August 2011 в 19:04
поделиться

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

я буду следить за этим вопросом, btw...

4
ответ дан stg 3 August 2011 в 19:04
поделиться

Я использую TmxWebUpdate. Это свободно, просто и дает Вам хороший контроль над процессом. Я на самом деле владею Пакетом Компонента TMS с TWebUpdate, но никогда действительно нашел серьезное основание переключиться.

Редактирование: Свяжитесь обновленный

6
ответ дан vrad 3 August 2011 в 19:04
поделиться

То же как "stg" и "GuyWithDogs", я использую TWebUpdate от TMS. Хотя документация не является настолько замечательной, не настолько трудный к изученному.

С TWebUpdate, у Вас есть некоторые опции, что протокол Вы используете, это могло быть сделано через HTTP, FTP или доступ к сети.

Для коммуникационного слоя, TWebUpdate использует WinInet. В некоторых машинах окна / кэш URL IE может быть frustating, таким образом, я добавил стандартную программу для очистки адреса сервера автоматического обновления от кэша сначала, чтобы гарантировать, что информация, собранная с сервера, актуальна.

1
ответ дан bprasetio 3 August 2011 в 19:04
поделиться

Мы также создали собственный. На самом деле это не так уж сложно.

Наш процесс выглядит примерно так:

  • Когда основное приложение запускается, оно проверяет (используя функции из библиотеки синапсов), есть ли доступное обновление (если, конечно, оно настроено на проверку) .

  • Если да, он уведомляет пользователя и спрашивает, хотят ли они выполнить обновление.

  • Если да, запускает программу обновления .exe и закрывает основное приложение.

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

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

  • Наконец, оно снова запускает основное приложение и закрывается.

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

5
ответ дан 27 November 2019 в 03:37
поделиться

Мы используем собственное решение, которое включает следующие шаги:

  1. Приложение подключается к http-ресурсу и загружает информационный файл (текстовый файл ini) в память, проверяет номер версии последней версии.
  2. Если доступна более новая версия, приложение загружает сжатый двоичный пакет в папку exe.
  3. По завершении загрузки пользователю предлагается перезапустить приложение.
  4. При запуске приложение проверяет наличие пакета обновления
  5. Приложение извлекает содержимое пакета (обычно это новый исполняемый файл приложения, но также возможны дополнительные ресурсы, например, обновленные языковые файлы и т. Д.) - для каждого файла оно переименовывает текущий / старый файл сначала на временное имя, а затем извлекает новый файл. Если в какой-то момент процесс завершится неудачно, временные файлы будут восстановлены.
  6. По завершении приложение запускает новый исполняемый файл и закрывается.

Никакой дополнительной программы обновления не требуется, приложение exe может справиться со всем само.

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

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

  1. Сконфигурируйте вашу установку, чтобы изменить права доступа к каталогу установки программ. Таким образом, файлы в «C: \ Program Files (x86) \ Your Company \ You App» могут быть изменены на учетных записях с ограниченными правами.

    Пример кода для InnoSetup:

      [Dirs]
    Имя: "{app}"; Разрешения: пользователи-изменить
    
  2. Установите файлы, которые вы планируете обновлять, в папку ProgramData вместо каталога, определенного пользователем, и используйте этот каталог в качестве папки замены. Если файлы существуют в ProgramData, используйте их, иначе проверьте каталог установки.

    Код InnoSetup:

      [Файлы]
    Источник: «C: \ Your Project \ YourApp.exe»; DestDir: "{commonappdata} \ Название компании \ Название приложения \";
    
4
ответ дан 27 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

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