Comment développer mon application Windows de sorte que la mise à jour automatique sur la machine cliente, comme Firefox, Skype < / a>, etc.? p>
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? P>
9 Réponses :
ClickOnce est ce que vous recherchez. p>
Vous pouvez également trouver ces questions pour les questions intéressantes (qui offre des solutions différentes): p>
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.
Il y a aussi le bloc de mise à jour dans l'ENT LIB par MSFT. P>
Que diriez-vous de System Center 2012 Configuration Manager? p>
Les cadres les plus populaires sont: p>
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. P>
J'ajouterais une autre variation possible: p>
https://github.com/synhershko/nappupdate P>
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. P>
J'ai couvert mes résultats liés au sujet de cette Réponse P>
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.
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();
}
Essayez ce paquet c'est facile et fonctionne bien.
Dupliqué possible de Bibliothèque automatique pour .NET?