Voici comment j'ai implémenté un programme de mise à jour que j'ai écrit précédemment.
Tout d'abord, vous prenez un fichier ini hors de votre serveur. Ce fichier contiendra des informations sur la dernière version et l'emplacement du fichier d'installation. Obtenir ce fichier n'est pas trop difficile. Je l'ai également fait configurer pour lire les informations d'un fichier ini local pour déterminer la dernière version. La meilleure façon de le faire serait de lire la version du fichier directement, mais je n'ai pas le code pour le faire.
Ensuite nous faisons une vérification très simple pour voir comment les deux versions comparent et téléchargent la mise à jour.
if (LatestVersion > CurrentVersion)
{
//Download update.
}
Le téléchargement de la mise à jour est aussi simple que le téléchargement de l'original ini. Vous changez simplement de changer les deux paramètres.
wc.DownloadFile(UrlOfLatestSetupFile, PlaceToSaveSetupFile);
Maintenant que vous avez téléchargé le fichier, il suffit d'exécuter le programme d'installation.
System.Diagnostics.Start(PathOfDownloadedSetupFile);
Si vous n'êtes pas sûr de savoir comment lire un fichier ini, je trouve la classe suivante, quelque part sur au 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();
}
}
}
Avez-vous effectué votre installation en tant que MSI? – EBGreen