


Beispielanalyse zur automatischen Aktualisierung lokaler Programme in C#
Über automatische Updates des Systems. In letzter Zeit kam es vor, dass der lokale Client mit der neuesten Version der Systemdateien im Java-Backend überschrieben werden musste, was als automatisches Update bezeichnet wird.
Das lokale System erhält die Versionsnummer des aktuellen Systems, um die Java-Schnittstellendaten im Hintergrund anzufordern. Was mir zurückgegeben wird, ist der aus dem Hintergrundkomprimierungspaket konvertierte Base64-Byte-Stream.
Der Client muss das lokale Programm aktualisieren, um die neue Version zu erhalten.
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());
Hier ist es ist Holen Sie sich den Byte-Stream.
Diese Methode kann das Problem lösen, dass mehrere Projekte in derselben Lösung die App.config unter demselben Projekt lesen können.
Hinweis: Es gibt referenzierte Klassenbibliotheken, die zum Betrieb komprimierter Pakete verwendet werden.
Lassen Sie uns über die Idee sprechen: Der erste Schritt besteht darin, den Bytestrom des komprimierten Pakets abzurufen und ihn lokal zu speichern. Der zweite Schritt besteht darin, die Dateien des komprimierten Pakets zu durchlaufen und die lokalen Dateien zu ersetzen, um den Vorgang abzuschließen das Versionsupdate des lokalen Systems.
Egal ob einfach oder komplex, wir müssen Schritt für Schritt vorankommen.
Das obige ist der detaillierte Inhalt vonBeispielanalyse zur automatischen Aktualisierung lokaler Programme in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie füge ich lokale Musik zu Soda Music hinzu? Sie können Ihre lokale Lieblingsmusik zur Soda Music APP hinzufügen, aber die meisten Freunde wissen nicht, wie man lokale Musik zu Soda Music hinzufügt Der Herausgeber, interessierte Nutzer kommen vorbei! Anleitung zur Verwendung von Soda-Musik. So fügen Sie lokale Musik zu Soda-Musik hinzu und klicken Sie auf den Funktionsbereich [Musik] unten auf der Hauptseite das Symbol [drei Punkte] in der unteren rechten Ecke; 3. Erweitern Sie abschließend die Funktionsleiste unten und wählen Sie die Schaltfläche [Herunterladen], um es zur lokalen Musik hinzuzufügen.

Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

Wie füge ich Wasserzeichen hinzu und speichere entfernte Bilder, nachdem ich sie lokal in PHP gespeichert habe? Bei der PHP-Entwicklung müssen wir häufig entfernte Bilder lokal speichern. Manchmal müssen wir dem gespeicherten Bild möglicherweise auch ein Wasserzeichen hinzufügen, um das Urheberrecht zu schützen oder zusätzliche Informationen hinzuzufügen. In diesem Artikel erfahren Sie, wie Sie mit PHP Remote-Bilder lokal speichern und den gespeicherten Bildern Wasserzeichen hinzufügen. 1. Remote-Bilder lokal speichern Zuerst müssen wir die Dateioperationsfunktion von PHP verwenden, um Remote-Bilder lokal zu speichern. Hier ist ein einfacher Beispielcode: &

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

Wie wir alle wissen, hat Microsoft angekündigt, dass Win11 Android-Anwendungen ausführen und lokale APK installieren kann. Nach dem Update von Win11 stellten Benutzer jedoch fest, dass sie nicht wussten, wie sie die lokale APK installieren sollten Diese Funktion wurde jedoch für Win11 implementiert. Warten Sie, bis die Funktion installiert ist, bevor Sie sie verwenden können. So installieren Sie eine lokale APK in Win11: 1. Laut Microsoft können Sie nach der Implementierung dieser Funktion durch Win11 direkt auf die heruntergeladene APK-Datei doppelklicken, um sie direkt zu installieren. 2. Nach Abschluss der Installation können Benutzer sie auch direkt im System ausführen. 3. Obwohl es sich mittlerweile um die offizielle Version von Win11 handelt, hat Microsoft diese Funktion für Win11 noch nicht implementiert. 4. Wenn der Benutzer also Win11 verwenden möchte

Wenn Sie ein .NET-Entwickler sind, müssen Sie sich der Bedeutung der Optimierung von Funktionalität und Leistung bei der Bereitstellung hochwertiger Software bewusst sein. Durch den fachgerechten Einsatz der bereitgestellten Ressourcen und die Verkürzung der Ladezeiten der Website schaffen Sie nicht nur ein angenehmes Erlebnis für Ihre Nutzer, sondern senken auch die Infrastrukturkosten.

In Bezug auf die Verarbeitung von Anforderungen mit hoher Parallelität bietet .NETASP.NETCoreWebAPI eine bessere Leistung als JavaSpringMVC. Zu den Gründen gehören: AOT-Frühkompilierung, die die Startzeit verkürzt, wobei Entwickler für die Zuweisung und Freigabe von Objektspeicher verantwortlich sind.

1. Fügen Sie ipaddradd10.10.1.1/32devlo:1 vorübergehend hinzu und schlagen Sie nach dem Neustart fehl. 2. Fügen Sie cd/etc/sysconfig/network-scriptscpifcfg-loifcfg-lo:1[root@localhostnetwork-scripts]#catifcfg-lo:1DEVICE dauerhaft hinzu =lo: 1IPADDR=10.10.1.1NETMASK=255.255.255.255ONBOOT=yesNAME=loopback1[root@localhostnetwork-scripts]#ipa
