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





Вот как я реализовал программу обновления, которую написал ранее.
Во-первых, вы берете 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
Вы производили установку как MSI?