Я работаю над графическим интерфейсом, который в основном используется для загрузки инструментов из Интернета.
Приложение спроектировано для .Net Framework 3.5 (для совместимости) и до сих пор прекрасно работает, но, на мой взгляд,Следующая проблема: каждый раз, когда одно из этих приложений изменяет ссылку, я должен изменить ее и в своем проекте, чтобы она могла отражать последнюю версию / ссылку.
Можно ли будет прочитать ссылки из локального текстового файла илиеще лучше - pastbin / googledoc, чтобы я мог изменять ссылки извне?
Хотелось бы, чтобы это было так же просто, как поместить string ccleaner = "www.ccleaner.link
и т. д. в текстовый файл и прочитать его с помощью File.ReadAllText
... App.xaml.cs:
namespace myapp
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public void Application_Startup(object sender, StartupEventArgs e)
{
var wc = new WebClient();
var csv = wc.DownloadString("https://docs.google.com/spreadsheets/d/1IjQfWMIQyw8NuncRd91iWJD_GdWTCqrrX11pTBv1bEA/edit?usp=sharing");
var links = csv
.Split('\n') // Extract lines
.Skip(1) // Skip headers line
.Select(line => line.Split(',')) // Separate application name from download URL
.ToDictionary(tokens => tokens[0], tokens => tokens[1]);
var CCleanerLink = links["CCleaner"];
}
}
}
tools.xaml.cs (это страница в главном окне)
namespace myapp
{
/// <summary>
/// Interaction logic for tools.xaml
/// </summary>
public partial class tools : Page
{
public tools()
{
InitializeComponent();
}
public void downloadFile(String address, String filename)
{
WebClient down = new WebClient();
down.Headers.Add(HttpRequestHeader.UserAgent,"Mozilla/5.0 (compatible; http://example.org/)");
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
down.DownloadFileAsync(new Uri(address), filename);
}
private void Autor_Checked(object sender, RoutedEventArgs e)
{
downloadFile("https://live.sysinternals.com/autoruns.exe", "autoruns.exe");
}
private void Ccleaner_Checked(object sender, RoutedEventArgs e)
{
downloadFile(CCleanerLink, "ccleaner.exe");
}
}
}