Публикация установленного приложения Windows одним щелчком мыши

У нас есть приложение для Windows (скажем, MyApp), установленное *.msi файл, и мы должны обновить его, когда выходит новая версия. Что мы хотели бы сделать это:

1) Мы устанавливаем новую версию программы, используя установочный файл на сервере.

2) Мы копируем установленные файлы из C:\Program Files (x86)\MyApp в общую папку на сервере (скажем, MyServer \ C: \ MyApp).

3) Мы создаем click once приложение и хотят позволить нашим пользователям дать ссылку, чтобы они могли установить и обновить свою программу (MyApp), нажав один раз из опубликованного местоположения (MyServer\C:\MyApp).

Итак, в таком случае, как мы можем это сделать? Я думаю, что мы создаем Windows Form проект в Visual Studio 2015, но нет ни малейшего представления о следующих шагах. Любой hepl будет оценен.

1 ответ

Обновленный ответ:

Итак, у вас есть файлы на вашем сервере. Когда произойдет фактическое обновление, вам нужно будет загрузить все файлы в каталог установки на компьютере пользователя. Чтобы сделать это проще, создайте архив (.zip) из этого файла. Нам также понадобится файл, содержащий номер версии приложения, которое заархивировано. Поэтому создайте простой текстовый файл (.txt). Содержимое файла должно быть только номером версии (пример: 1000). Номер версии в этом файле не может быть отрицательным или 0. Когда вы хотите обновить, создайте новый файл архива (.zip) и увеличьте номер версии в текстовом файле.

Теперь волшебство начинается. Создайте приложение Visual Studio для Windows Forms. После запуска это приложение будет проверять наличие обновлений, загружать их при необходимости, а затем запускать приложение (которое находится на сервере). Для этого нам понадобится способ узнать, какая версия установлена. Для этого мы будем использовать настройки приложения. Создайте параметр под названием "версия", то есть целое число. Значение должно быть 0, что означает, что приложение (серверное) никогда не устанавливалось ранее.

Когда приложение запустится, мы загрузим строку внутри "version.txt", который находится на сервере, используя (пример C#):

Клиент WebClient = новый WebClient ();
string latest_string = client.DownloadString ("MyServer.net/version.txt");

Затем преобразуйте строку в целое число, чтобы мы могли сравнить ее с версией, сохраненной в настройках приложения (пример C#):

int latest = Int32.Parse (latest_string);

Затем мы используем простое выражение if (пример C#):

if (Properties.Settings.Default.version //Доступно обновление
} еще {
// Запускаем программу и пропускаем обновление
}

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

Загрузка (C# exapmle):

используя (var client = new WebClient () {
client.DownloadFile ("MyServer.net/Update.zip", "Update.zip");
}

Для извлечения мы используем класс ZipFile ( ссылка на справку) (пример C#):

string dir = Environment.CurrentDirectory + "MyApp";
если (Directory.Exists(путь)) {
Directory.Delete (dir, true);
}
ZipFile.ExtractToDirectory ("Update.zip", dir);

Нам нужно обновить настройку версии, потому что приложение было обновлено, и мы не хотим непрерывно загружать (пример C#):

Properties.Settings.Default.version = "latest";
Properties.Settings.Default.Save ();

Запустите процесс (пример C#):

Process myProcess = new Process ();
myProcess.StartInfo.FileName = "dir +" run.exe ";
myProcess.Start ();

И, наконец, мы закрываем приложение и запускаем его (пример C#):

Environment.Exit (0);


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

Другие вопросы по тегам