- Yasaklandı
- #1
Öncelikle herkese selamlar,
bu sistem için ihtiyacınız olacak tek şey bir HOSTING hizmeti olacaktır.
Uygulamanızın güncellemesinden kullanıcıları haberdar etmek için yapmamız gerekenler:
1. İnternet bağlantısını kontrol etmek
2. Hosting üzerindeki XML dosyasından son sürümün ne olduğuna bakmak
3. Son sürüm bizim uygulamamızda ki değerden büyükse güncelleme diyaloğu göstermek
4. Kullanıcıya zorla güncellemeyi indirtmek yada seçim yapmasını sağlamak (ki etik olan bu)
Önce internet bağlantısının olup olmadığını kontrol edecek bir kod bloğu yazalım:
Şimdi Hostingimize yükleyeceğimiz XML dosyasını yazalım:
Çok güzel şimdiye kadar;
Kullanıcımızın internet bağlantısı var mı yok mu onu öğrendik
Xml dosyamızı Hostinge upload ettik, sonrasında kontrol etmeye yarayacak fonksiyonu yazdık
Diyaloğumuzu gösterdik
Şimdi güncellememizi indirecek ufak bir konsol uygulaması yazmak kaldı
Değiştirmeniz gereken yerler var bunu unutmadan işlemlerinizi yapın:
Bu konsol uygulamasını build ettikten sonra exe dosyasını kendi projeniz ile aynı konuma koymanız gerekmektedir.
Şimdi ince ayarlarımızı görseller ile anlatacağım çoğunuz belki biliyordur ama kullandığını pek zannetmiyorum
Version değerini uygulamayı her güncellemek istediğimizde arttıracak şekilde yazmamız lazım
DİKKAT: 1.2.0 versiyonu 1.3 versiyonundan daha büyük olacaktır bunun için 1.3.0 yapmalısınız
yada bugünü örnek alırsak 1.4.08 gibi tarih bazlı güncellemeler de yapabilirsiniz
Aşağıdaki görselde ise uygulamamızın processName i yazıyor yani şu kodu çalıştırdığımızda uygulamamızın kapanmasına yarayacak
Son olarak kafa karışıklığı olmasın diye Hostingin metin editörünü göstermek istiyorum. Yeni versiyon yükleyeceğiniz zaman eski versiyonları silmezseniz sizin için daha iyi olur yeni sürümde hata olması durumunda sürüm düşürebilirsiniz
Merak ettiğiniz, anlamadığınız yada eksik anlattığım bir yer olursa mutlaka aşağıda bildirin.
İyi karantinalar.
bu sistem için ihtiyacınız olacak tek şey bir HOSTING hizmeti olacaktır.
Uygulamanızın güncellemesinden kullanıcıları haberdar etmek için yapmamız gerekenler:
1. İnternet bağlantısını kontrol etmek
2. Hosting üzerindeki XML dosyasından son sürümün ne olduğuna bakmak
3. Son sürüm bizim uygulamamızda ki değerden büyükse güncelleme diyaloğu göstermek
4. Kullanıcıya zorla güncellemeyi indirtmek yada seçim yapmasını sağlamak (ki etik olan bu)
Önce internet bağlantısının olup olmadığını kontrol edecek bir kod bloğu yazalım:
C#:
public static bool BaglantiKontrolu(){
try
{ //WebClient kütüphanesini kullanarak dosya boyutu çok küçük bir
//sayfa ile kontrolümüzü yapıyoruz buradan dönen değer boolean olacaktır.
using (var client = new WebClient())
using (client.OpenRead("http://google.com/generate_204"))
return true;
}
catch
{
return false;
}
}
Şimdi Hostingimize yükleyeceğimiz XML dosyasını yazalım:
Kod:
[COLOR=rgb(251, 160, 38)]Dipnot: Her yeni güncellemede version değişkenini manuel olarak değiştirmelisiniz(Hosting hizmeti veren sitenin dosya yöneticisinde metin editörü vardır oradan düzenleyebilirsiniz). İlerideki derslerde talep olursa otomatik nasıl yapılır anlatabilirim.[/COLOR]
2. adıma geçebiliriz artık sırada [COLOR=rgb(251, 160, 38)]XML[/COLOR] dosyamızı Parse edecek fonksiyonumuz var:
[CODE=csharp]// ######################################################################## //
// ####################### using System.Xml.Linq; ####################### //
// ######################################################################## //
public void GuncellemeKontrolu() {
XDocument xDoc = XDocument.Load("https://DOMAIN.COM/updates/update.xml");
// Dosyamızı alıyoruz
var Guncellemeler = xDoc.Element("Updates").Descendants("Update").Where(d => int.Parse(d.Element("Version").Value.ToString().Replace(".", "")) > int.Parse(Properties.Settings.Default.Version.ToString().Replace(".", ""))).Select(d => d);
//Uygulamadaki Versiyon değeri ile karşılaştırmak için sırasıyla dışarıdan içeri giriyoruz
//Updates > Update > Version değerinin noktasız halini (örn: 12.2.4 ise 1224) int değerine çeviriyoruz
//Aynı işlemi uygulamayı build etmeden önce yazdığımız değere uyguluyoruz (örn: kullanıcımızda şuan 12.2.2 mevcut)
// 1224 > 1222 olduğu için güncellemeler elemanının sayısı 1 olacak ve aşağıdaki if döngüsüne girmeyecek
if (Guncellemeler.Count() == 0)
{
MessageBox.Show("Yazılımınız şuan için güncel!", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
foreach (XElement elem in Guncellemeler)
{
if (MessageBox.Show("Güncelleme mevcut! \nŞuan kullandığınız sürüm:" + Properties.Settings.Default.Version + "\nYeni sürüm:" + elem.Element("Version").Value + "\nŞimdi indirmek ister misiniz?", "Güncelleme Mevcut", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
// Buraya kadar geldik güncelleme işlemini yaptırmamız lazım
// fakat aynı uygulamadan bunu yapmak mümkün değil o yüzden güncellemede kullanılacak bilgileri dışarı aktarıyoruz.
string path = @"update.txt";
if (File.Exists(path))
{
File.Delete(path);
}
string updateLink = "https://Domain.com/updates/" + elem.Element("Path").Value;
File.WriteAllText(path, updateLink);
Process.Start(Application.StartupPath + "\\update.exe");
Environment.Exit(0);
}
}
}
Çok güzel şimdiye kadar;
Kullanıcımızın internet bağlantısı var mı yok mu onu öğrendik
Xml dosyamızı Hostinge upload ettik, sonrasında kontrol etmeye yarayacak fonksiyonu yazdık
Diyaloğumuzu gösterdik
Şimdi güncellememizi indirecek ufak bir konsol uygulaması yazmak kaldı
Değiştirmeniz gereken yerler var bunu unutmadan işlemlerinizi yapın:
C#:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
namespace UpdateMarket //*****************BURASI
{
class Program
{
static void Main(string[] args)
{
string downloadURL="";
string path = @"update.txt";
if (File.Exists(path))
{
Console.WriteLine("Kontrol yapılıyor...");
downloadURL = File.ReadAllText(path);
}
else {
Environment.Exit(0);
}
var path2 = new Uri(
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
).LocalPath;
Console.WriteLine("İndirme Başlatılıyor...");
using (WebClient wc = new WebClient())
{
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.33 Safari/537.36");
wc.DownloadFile(downloadURL, path2 + "\\Uygulamam2.exe"); //*****BURASI
}
Console.WriteLine("Dosya indirildi kurulum için hazırlanıyor...");
foreach (var process in Process.GetProcessesByName("Uygulamam")) //******BURASI
{
process.Kill();
}
//********VE BURADAKİ UYGULAMAM YAZAN YERLERİ KENDİ PROCESSNAME'İNİZ İLE DEĞİŞTİRİN
File.Move(path2 + "\\Uygulamam.exe", path2 + "\\UygulamamOld.exe");
// Şuanki versiyonu old olarak değiştiriyoruz
System.Threading.Thread.Sleep(1000);
File.Move(path2 + "\\Uygulamam2.exe", path2 + "\\Uygulamam.exe");
// Yeni versiyonu eskisinin yerine koyuyoruz ki kısayollar varsa bozulmasın
System.Threading.Thread.Sleep(1000);
Process.Start(path2 + "\\Uygulamam.exe");
// Güncel uygulamayı çalıştırıyoruz
System.Threading.Thread.Sleep(1000);
}
}
}
Bu konsol uygulamasını build ettikten sonra exe dosyasını kendi projeniz ile aynı konuma koymanız gerekmektedir.
Şimdi ince ayarlarımızı görseller ile anlatacağım çoğunuz belki biliyordur ama kullandığını pek zannetmiyorum
Version değerini uygulamayı her güncellemek istediğimizde arttıracak şekilde yazmamız lazım
DİKKAT: 1.2.0 versiyonu 1.3 versiyonundan daha büyük olacaktır bunun için 1.3.0 yapmalısınız
yada bugünü örnek alırsak 1.4.08 gibi tarih bazlı güncellemeler de yapabilirsiniz
Aşağıdaki görselde ise uygulamamızın processName i yazıyor yani şu kodu çalıştırdığımızda uygulamamızın kapanmasına yarayacak
C#:
foreach (var process in Process.GetProcessesByName("Uygulamam")){
process.Kill();
}
Son olarak kafa karışıklığı olmasın diye Hostingin metin editörünü göstermek istiyorum. Yeni versiyon yükleyeceğiniz zaman eski versiyonları silmezseniz sizin için daha iyi olur yeni sürümde hata olması durumunda sürüm düşürebilirsiniz
Merak ettiğiniz, anlamadığınız yada eksik anlattığım bir yer olursa mutlaka aşağıda bildirin.
İyi karantinalar.
Son düzenleme: