Обновите настройку программы

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

Приложение находится в c#.

Не могли бы вы помочь?

Вы производили установку как MSI?

EBGreen 29.10.2008 17:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
177
2

Ответы 2

Вот как я реализовал программу обновления, которую написал ранее.

Во-первых, вы берете ini-файл со своего сервера. Этот файл будет содержать информацию о последней версии и местонахождении установочного файла. Получить этот файл не так уж и сложно.

                WebClient wc = new WebClient();
                wc.DownloadFile(UrlOfIniContainingLatestVersion, PlacetoSaveIniFile);

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

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

            if (LatestVersion > CurrentVersion)
            {
                //Download update.
            }

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

wc.DownloadFile(UrlOfLatestSetupFile, PlaceToSaveSetupFile);

Теперь, когда у вас есть загруженный файл, можно просто запустить установщик.

System.Diagnostics.Start(PathOfDownloadedSetupFile);

Если вы не знаете, как читать ini-файл, я нашел следующий класс где-то в CodeProject

using System;
using System.Runtime.InteropServices;
using System.Text;

namespace Ini
{
    /// <summary>
    /// Create a New INI file to store or load data
    /// </summary>
    public class IniFile
    {
        public string path;

        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section,
            string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
            int size, string filePath);

        /// <summary>
        /// INIFile Constructor.
        /// </summary>
        /// <PARAM name = "INIPath"></PARAM>
        public IniFile(string INIPath)
        {
            path = INIPath;
        }

        /// <summary>
        /// Write Data to the INI File
        /// </summary>
        /// <PARAM name = "Section"></PARAM>
        /// Section name
        /// <PARAM name = "Key"></PARAM>
        /// Key Name
        /// <PARAM name = "Value"></PARAM>
        /// Value Name
        public void IniWriteValue(string Section, string Key, string Value)
        {
            WritePrivateProfileString(Section, Key, Value, this.path);
        }

        /// <summary>
        /// Read Data Value From the Ini File
        /// </summary>
        /// <PARAM name = "Section"></PARAM>
        /// <PARAM name = "Key"></PARAM>
        /// <PARAM name = "Path"></PARAM>
        /// <returns></returns>
        public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }
    }
}

Похоже, вы могли бы использовать ClickOnce

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