2008-10-29 12 views
1

Je n'ai pas d'expérience dans la configuration, mais je suis prêt à faire le mien mais maintenant j'ai besoin d'aide parce que quand je fais une nouvelle version je veux que l'utilisateur clique deux fois sur le raccourci sont tous. L'application est en c#.Mettre à jour un programme d'installation

Pourriez-vous aider?

+0

Avez-vous effectué votre installation en tant que MSI? – EBGreen

Répondre

1

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(); 

     } 
    } 
} 
0

On dirait que vous pourriez être en mesure d'utiliser ClickOnce

Questions connexes