Подтвердить что ты не робот

Как автоматически обновлять приложение без ClickOnce?

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

Я установил Visual Studio 2012 Professional и играл с InstallShield, и это определенно делает хороших инсталляторов, но я не могу понять, как включить приложение в "автоматическое обновление" (то есть, когда он запускается, проверяет, чтобы убедиться, что он использует последнюю версию).

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

Как я могу проверить приложение на наличие обновлений и установить их? Или это невозможно (или не просто)?

4b9b3361

Ответ 1

Есть много вопросов об этом, поэтому я расскажу вам об этом.

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

Некоторые ссылки:

Ответ 2

Я думаю, что вы должны проверить следующий проект на codeplex.com http://autoupdater.codeplex.com/

Это примерное приложение разработано на С# в виде библиотеки с названием проекта "AutoUpdater". DLL "AutoUpdater" можно использовать в приложении Windows С# (WinForm и WPF).

В AutoUpdater есть определенные функции:

  • Простота внедрения и использования.
  • Автоматическое повторное использование приложения после проверки обновления.
  • Процесс обновления прозрачен для пользователя.
  • Чтобы избежать блокировки основного потока с помощью многопоточной загрузки.
  • Возможность обновления системы, а также программы автоматического обновления.
  • Код, который не нуждается в изменении при использовании различными системами и может быть скомпилирован в библиотеке.
  • Легко для загрузки файлов обновлений.

Как использовать?

В программе, которую вы хотите автоматически обновлять, вам просто нужно вызвать функцию AutoUpdate в основной процедуре. Функция AutoUpdate проверит версию с тем, что прочитано из файла, расположенного на веб-сайте/FTP. Если версия программы ниже, чем прочитанная программа загружает программу автоматического обновления и запускает ее, а функция возвращает значение True, что означает, что будет выполняться автоматическое обновление, а текущая программа должна быть закрыта. Программа автоматического обновления получает несколько параметров из программы, подлежащей обновлению, и выполняет автоматическое обновление, и после этого запускает обновленную систему.

  #region check and download new version program
  bool bHasError = false;
  IAutoUpdater autoUpdater = new AutoUpdater();
  try
  {
      autoUpdater.Update();
  }
  catch (WebException exp)
  {
      MessageBox.Show("Can not find the specified resource");
      bHasError = true;
  }
  catch (XmlException exp)
  {
      bHasError = true;
      MessageBox.Show("Download the upgrade file error");
  }
  catch (NotSupportedException exp)
  {
      bHasError = true;
      MessageBox.Show("Upgrade address configuration error");
  }
  catch (ArgumentException exp)
  {
      bHasError = true;
      MessageBox.Show("Download the upgrade file error");
  }
  catch (Exception exp)
  {
      bHasError = true;
      MessageBox.Show("An error occurred during the upgrade process");
  }
  finally
  {
      if (bHasError == true)
      {
          try
          {
              autoUpdater.RollBack();
          }
          catch (Exception)
          {
             //Log the message to your file or database
          }
      }
  }
  #endregion

Ответ 3

Наиболее распространенным способом является размещение простого текстового файла (лучше XML/JSON) на вашем веб-сервере с последней версией сборки. Затем приложение загрузит этот файл, проверит версию и запустит программу обновления. Типичный файл будет выглядеть так:

Файл обновления приложения//Уникальная строка, позволяющая вашему приложению распознавать тип файла

версия: 1.0.0//последняя версия сборки

download: http://yourserver.com/...//Ссылка на версию для скачивания

redirect: http://yournewserver.com/...//Я использовал это поле в случае изменения адреса сервера. Это позволит клиенту узнать, что ему нужно искать новый адрес.

Вы также можете добавить другие важные детали.

Ответ 4

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

открыть блокнот и сохранить файл ниже с помощью внешнего .bat

xcopy \\IP address\folder_share_name\*.* /s /y /d /q  
start "label" /b "youraplicationname.exe"

Ответ 5

A Lay men way

в Main() переименуйте исполняемый файл сборщика .exe в какую-то вещь проверьте дату и время создания. и обновленное время даты файла и копирование в папку приложения.

//Rename he executing file
System.IO.FileInfo file = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);

System.IO.File.Move(file.FullName, file.DirectoryName + "\\" + file.Name.Replace(file.Extension,"") + "-1" + file.Extension);

затем выполните проверку логики и скопируйте новый файл в папку