


Exemple d'analyse de la façon de mettre à jour automatiquement les programmes locaux en C#
À propos des mises à jour automatiques du système. Récemment, il est apparu qu'il était nécessaire d'écraser le client local avec la dernière version des fichiers système dans le backend Java, ce que l'on appelle une mise à jour automatique.
Le système local obtiendra le numéro de version du système actuel pour demander les données de l'interface Java en arrière-plan. Ce qui m'est renvoyé est le flux d'octets base64 converti à partir du package de compression en arrière-plan.
Le client doit mettre à jour le programme local pour obtenir la nouvelle version.
if (UpdateSystem(Path.Combine(Application.StartupPath, "Version.txt"), Path.Combine(Application.StartupPath, "u.zip"))) { Application.Exit(); }
/// <summary> /// 读取本地版本请求更新 /// </summary> /// <param name="document">读取的文件信息</param> /// <param name="zipPath">返回zip包本地路径</param> /// <returns></returns> private bool UpdateSystem(string document, string zipPath) { try { Dictionary<string, string> postDic = new Dictionary<string, string>(); //获取文件内的版本号 if(File.Exists(document)) { postDic.Add("version", File.ReadAllText(document).Trim()); } else { postDic.Add("version", "0"); } string postJson = JsonConvert.SerializeObject(postDic); string url = GetAppSettingValue("serverUrl") + "parkClient/parkClientUpdate"; //返回的json数据 JObject obj = (JObject)JsonConvert.DeserializeObject(PostData(postJson, url)); string newVersion = obj["version"].ToString(); if (!String.IsNullOrWhiteSpace(newVersion)) { byte[] bytesFile = Convert.FromBase64String(obj["byteArray"].ToString()); if (obj["clientMD5"].ToString() == BitConverter.ToString( new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(bytesFile)).Replace("-", "")) { ZipCoverage(bytesFile, zipPath); File.WriteAllText(document, newVersion); } } return true; } catch (Exception ex) { MessageBox.Show(ex.Message); return false; } } /// <summary> /// 解压zip包覆盖更新 /// </summary> /// <param name="bytes">接受更新包的字节信息</param> /// <param name="zpath">覆盖的路径</param> private void ZipCoverage(byte[] bytes, string zpath) { File.WriteAllBytes(zpath, bytes); using (ZipArchive archive = ZipFile.OpenRead(zpath)) { string file = null; foreach (ZipArchiveEntry entry in archive.Entries) { if (!entry.FullName.EndsWith("/")) { file = Path.Combine(Application.StartupPath, entry.FullName); if (File.Exists(file)) { File.Delete(file); } } } } ZipFile.ExtractToDirectory(zpath, Application.StartupPath); } /// <summary> /// 获取配置文件中的appSettings节中的配置内容 /// </summary> /// <param name="appSettingKey"></param> /// <param name="message"></param> /// <returns></returns> private string GetAppSettingValue(string appSettingKey) { ExeConfigurationFileMap map = new ExeConfigurationFileMap { ExeConfigFilename = @"TDH.Parking.Client.exe.config" }; return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None).AppSettings.Settings[appSettingKey].Value; }
byte[] bytesFile = Convert.FromBase64String(obj["byteArray"].ToString());
Voici est Obtenir le flux d'octets.
Cette méthode peut résoudre le problème selon lequel plusieurs projets dans la même solution peuvent lire le App.config sous le même document de projet.
Remarque : Il existe des bibliothèques de classes référencées, qui sont utilisées pour faire fonctionner des packages compressés.
Parlons de l'idée : la première étape consiste à obtenir le flux d'octets du package compressé et à l'enregistrer localement. La deuxième étape consiste à parcourir les fichiers du package compressé et à remplacer les fichiers locaux pour terminer. la mise à jour de la version du système local.
Que ce soit simple ou complexe, nous devons avancer étape par étape.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ajouter de la musique locale à Soda Music ? Vous pouvez ajouter votre musique locale préférée à l'application Soda Music, mais la plupart des amis ne savent pas comment ajouter de la musique locale. Voici ensuite le didacticiel graphique sur la façon d'ajouter de la musique locale à Soda Music. l'éditeur. , les utilisateurs intéressés viennent jeter un œil ! Tutoriel sur l'utilisation de la musique soda. Comment ajouter de la musique locale à la musique soda. 1. Ouvrez d'abord l'application soda music et cliquez sur la zone de fonction [Musique] en bas de la page principale. l'icône [trois points] dans le coin inférieur droit ; 3. Enfin, développez la barre de fonctions ci-dessous et sélectionnez le bouton [Télécharger] pour l'ajouter à la musique locale.

Que vous soyez débutant ou professionnel expérimenté, la maîtrise du C# ouvrira la voie à votre carrière.

Comment ajouter un filigrane et enregistrer des images distantes après les avoir enregistrées localement en PHP ? Dans le développement PHP, nous rencontrons souvent le besoin de sauvegarder localement des images distantes. Parfois, nous pouvons également avoir besoin d'ajouter un filigrane à l'image enregistrée pour protéger les droits d'auteur ou ajouter des informations supplémentaires. Cet article explique comment utiliser PHP pour enregistrer des images distantes en local et ajouter des filigranes aux images enregistrées. 1. Enregistrez les images distantes en local. Tout d'abord, nous devons utiliser la fonction d'opération de fichier de PHP pour enregistrer les images distantes en local. Voici un exemple de code simple : &

Le développement des technologies d’intelligence artificielle (IA) bat son plein aujourd’hui et elles ont montré un grand potentiel et une grande influence dans divers domaines. Aujourd'hui, Dayao partagera avec vous 4 cadres de projets liés au modèle d'IA open source .NET LLM, dans l'espoir de vous fournir une référence. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel est un kit de développement logiciel (SDK) open source conçu pour intégrer de grands modèles de langage (LLM) tels qu'OpenAI, Azure

Comme nous le savons tous, Microsoft a annoncé que Win11 sera capable d'exécuter des applications Android et d'installer l'apk local. Cependant, après la mise à jour de Win11, les utilisateurs ont constaté qu'ils ne savaient pas comment installer l'apk local. encore implémenté cette fonctionnalité pour win11. Il faut attendre que la fonction soit installée avant de pouvoir l'utiliser. Comment installer l'apk local dans win11 : 1. Selon Microsoft, une fois que win11 a installé cette fonction, vous pouvez directement double-cliquer sur le fichier apk téléchargé pour l'installer directement. 2. Une fois l'installation terminée, les utilisateurs peuvent également l'exécuter directement dans le système. 3. Bien qu'il s'agisse désormais de la version officielle de Win11, Microsoft n'a pas encore implémenté cette fonctionnalité pour Win11. 4. Donc, si l'utilisateur souhaite utiliser Win11

Si vous êtes un développeur .NET, vous devez être conscient de l'importance d'optimiser les fonctionnalités et les performances pour fournir des logiciels de haute qualité. En utilisant de manière experte les ressources fournies et en réduisant les temps de chargement des sites Web, vous créez non seulement une expérience agréable pour vos utilisateurs, mais vous réduisez également les coûts d'infrastructure.

En termes de traitement des requêtes à haute concurrence, .NETASP.NETCoreWebAPI fonctionne mieux que JavaSpringMVC. Les raisons incluent : la compilation précoce AOT, qui réduit le temps de démarrage, une gestion plus raffinée de la mémoire, où les développeurs sont responsables de l'allocation et de la libération de la mémoire des objets.

1. Ajoutez temporairement ipaddradd10.10.1.1/32devlo:1 et échouez après le redémarrage 2. Ajoutez définitivement cd/etc/sysconfig/network-scriptscpifcfg-loifcfg-lo:1[root@localhostnetwork-scripts]#catifcfg-lo:1DEVICE. =lo : 1IPADDR=10.10.1.1NETMASK=255.255.255.255ONBOOT=yesNAME=loopback1[root@localhostnetwork-scripts]#ipa
