Hallo Forum,
ich habe ein für mich unlösbares Problem. Ich möchte immer die aktuelle TeamViewer Quick Version herunterladen. Leider ist die URL nach jedem Update eine andere.
Wie bin ich zu dieser URL gekommen? Ich habe auf folgender URL ein Rechtsklick auf "Erneut versuchen" gemacht und mir die URL gespeichert (
TeamViewer). Diese ändert sich, wie zuvor erwähnt, nach jedem Update von TeamViewer. Wie kann ich eine Abfrage nach dieser URL machen? Das er mir immer die aktuelle nimmt?
Ziel ist es immer eine aktuelle TeamViewer QuickSupport Version herunterzuladen. Dies mache ich aktuell mit folgendem Code:
public void TVLoad()
{
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string remoteUri = "https://customdesignservice.teamviewer.com/download/windows/v15/pc6axfs/TeamViewerQS.exe?sv=2020-04-08&se=2022-06-25T20%3A15%3A22Z&sr=b&sp=r&sig=AFFtrP5I8v0FxyZTJm9WCYQtH%2BtZ8vDl0rahfQ21%2BEo%3D&1656101722991"; <- DIESE URL ÄNDER SICH IMMER
string filePath2;
string desktopPath2 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
filePath2 = desktopPath + "/Fernwartung.exe";
File.Delete(filePath2);
WebClient myWebClient = new WebClient();
myWebClient.DownloadFile(remoteUri, filePath2);
Process.Start(filePath2);
}
Gruß
iSteffen
Also ich würde es wahrscheinlich mit einer Regenechse machen.
Es wird sich ja wahrscheinlich nur der Teil nach dem ? ändern.
Ist das eine personalisierte Version TeamViewer QuickSupport?
Download von TeamViewer für die verschiedenen Plattformen ist unter https://www.teamviewer.com/de/download/ erreichbar.
Der Download für die normale aktuelle Version vom QuickSupport ist doch immer der gleiche.
https://download.teamviewer.com/download/TeamViewerQS.exe
Das ist ein Custom TeamViewer.
Wie könnte den die Regex Anfrage hierfür aussehen? Und bleib ich dann bei der „WebClient“ Klasse? Oder sollte ich etwas anderes nehmen?
Gruß
iSteffen
Zieh dir das HTML, danach kannst Du entweder mit XPath danach suchen, oder Du greifst zu einem Web-Framework, das HTML anhand von CSS-Selektoren absuchen kann.
Welchen XPath bzw. CSS-Selector Du brauchst, kannst Du über die Dev-Tools von deinem Browser herausfinden, der zeigt dir ja alles an, wonach Du filtern kannst.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Die von dir gepostete Webseite fragt beim Laden eine API an und tauscht dann on-the-fly den Downloadlink gegen die Antwort der API aus.
So könntest du das in C# abbilden:
using System.Text;
using System.Text.Json;
public class Program
{
public static async Task Main()
{
var data = new
{
ConfigId = "pc6axfs",
Version = 15,
IsCustomModule = true,
Subdomain = 1,
ConnectionId = ""
};
string jsonData = JsonSerializer.Serialize(data);
HttpClient client = new();
// User-Agent muss gesetzt sein, sonst kommt ein 404 von der API zurück, wird zur Bestimmung des OS verwendet
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10)");
var response = await client.PostAsync(
"https://get.teamviewer.com/api/CustomDesign", // ob du die API verwenden darfst kann ich dir nicht sagen, ist nicht offiziell von Teamviewer dokumentiert
new StringContent(jsonData, Encoding.UTF8, "application/json"));
var contents = await response.Content.ReadAsStringAsync(); // hier steht deine Download-URL drin, aber mit führenden und nachgestellten Anführungszeichen
Console.WriteLine(contents);
}
}
Mega gut! Das ist genau das was ich gesucht habe.
Kann ich Version noch irgendwie automatisch abfragen?
Es wird in Zukunft bestimmt die Version 16,17,18… kommen.
Im einfachsten Fall kannst du doch durch iterieren und merken der letzten Version die aktuelle ermitteln.
Dafür brauchst du nur eine for Schleife die ab der letzten Version die Folgeversionen ermittelt.
Die neu Version muss dann nur gemerkt werden, damit beim nächsten Durchlauf wieder die Folgeversion gesucht wird.
Sollte jetzt keine Raketenwissenschaft sein 🙂
Version kannst du dann in eine Textdatei schreiben.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Lass ich einfach mal als Hinweis da:
HttpClient is intended to be instantiated once and reused throughout the life of an application.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code