11
votes

Mettre à jour automatique une application Windows

Comment développer mon application Windows de sorte que la mise à jour automatique sur la machine cliente, comme Firefox, Skype < / a>, etc.?

Y a-t-il une approche simple ou une bibliothèque open source qui m'aidait à le faire juste à suivre quelques étapes ou quelques lignes de code?


1 commentaires

9 Réponses :


3
votes

Essayez Microsoft ClickOnce Technologie

(dans MSDN )


0 commentaires

9
votes

ClickOnce est ce que vous recherchez.

Vous pouvez également trouver ces questions pour les questions intéressantes (qui offre des solutions différentes):


2 commentaires

Voici un article contre ClickOnce Stevestreeting.com / 2013/05 / 12 / ...


Un autre inconvénient de ClickOnce est qu'il ne peut que mettre à jour uniquement les installations utilisateur (pas à l'échelle de la machine). Pour une liste de cadres de mise à jour disponibles, vous pouvez trouver Omaha-Consulting.com/best -UPDATE-Frameworks-for-Windows intéressant.



3
votes

2
votes

Il y a aussi le bloc de mise à jour dans l'ENT LIB par MSFT.


0 commentaires

0
votes

Que diriez-vous de System Center 2012 Configuration Manager?


0 commentaires

2
votes

Les cadres les plus populaires sont:

  • Google Omaha - C'est ce que l'utilisation de Chrome utilise. Très puissant.
  • Squirrel - Ceci est utilisé dans les applications électroniques. Facile à utiliser mais ne peut pas mettre à jour les installations à l'échelle de la machine. En outre, aucune notification de mise à jour graphique.
  • WINSparkle - vous donne des notifications de mise à jour graphique. Mais moins mature que l'écureuil.
  • Autopdater.net - Mises à jour graphiques et silencieuses. Semblable à Squirrel et Winsparkle.

    J'ai pris ces liens de Cet article . Il va en plus de détails sur les avantages et les inconvénients de chacun des cadres.


0 commentaires


0
votes

Bien que ClickOnce est simple et ressuscité pour .NET 5, il a toujours beaucoup de limitations, alors j'ai découvert que la meilleure option existe-t-elle: vous pouvez utiliser Inclus dans le mécanisme Windows 10 pour la livraison d'applications appelée Appinstaller en emballant votre application. dans le paquet ou le paquet MSIX.

J'ai couvert mes résultats liés au sujet de cette Réponse


0 commentaires

0
votes

Utilisez md5-update IT EASY NEWEY Needy Vous avez besoin que d'ajouter 5 lignes à votre application, aucun besoin de configuration dans votre application n'ajoute que dans la bibliothèque et publie les fichiers.

 MD5-Update P>

1. Votre besoin d'un serveur Web avec PHP fort> pour publier vos fichiers, veuillez inclure updt.exe. P>

Webserver p>

2. Ajouter index.php strong> pour faire la liste des fichiers de mise à jour. Aviable sur le référentiel GitHub https: // github. com / jrz-soft-mx / md5-update / blob / principal / outil / outils.zip o Créez une nouvelle application avec ce code. P>

try
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    List<string> lisArg = Environment.GetCommandLineArgs().ToList();
    if (lisArg.Count < 2)
    {
        MessageBox.Show("Please provide App Excutable Name and Procees name");
        Application.Exit();
        return;
    }
    string strAppName = lisArg[1];
    string strAppProcees = lisArg[2];
    Process[] lisPro = Process.GetProcessesByName(strAppProcees);
    foreach (Process Pro in lisPro)
    {
        if (Pro.Id != Process.GetCurrentProcess().Id)
        {
            Pro.Kill();
            Thread.Sleep(1000);
        }
    }
    string strAppMain = AppDomain.CurrentDomain.BaseDirectory + strAppName;
    string strAppUpdate = AppDomain.CurrentDomain.BaseDirectory + @"updt\" + strAppName;
    if (!File.Exists(strAppMain))
    {
        MessageBox.Show("App Excutable dosent exists");
        Application.Exit();
        return;
    }
    if (!File.Exists(strAppUpdate))
    {
        MessageBox.Show("App Excutable Updated dosent exists");
        Application.Exit();
        return;
    }
    File.Copy(strAppUpdate, strAppMain, true);
    long fileSize = 0;
    FileInfo currentFile = new FileInfo(strAppMain);
    while (fileSize < currentFile.Length)
    {
        fileSize = currentFile.Length;
        Thread.Sleep(1000);
        currentFile.Refresh();
    }
    Process.Start(strAppMain);
}
catch (Exception Ex)
{
    MessageBox.Show("An error ocurred");
    File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"updt_" + DateTime.Now.ToString("yyyyMMddTHHmmss")  + " .txt", Ex.ToString());
    Application.Exit();
}


1 commentaires

Essayez ce paquet c'est facile et fonctionne bien.