Обновить настройки программы - PullRequest
1 голос
/ 29 октября 2008

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

Приложение в c#.

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

Ответы [ 2 ]

1 голос
/ 29 октября 2008

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

Во-первых, вы извлекаете 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();

        }
    }
}
0 голосов
/ 29 октября 2008

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

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