Sürüm Güncellemeleri Nasıl Oluyor?

Merhaba,

Aklıma takılan bir soruyu sizlere sormayı tercih ettim. İnternette baktığımda önce Türkçe aratarak gezindim ardından İngilizce (Translate yardımıyla) aratarak gezindiğimde istediğim sonuca ulaşamadım…

Arkadaşlar sorum şu:
python ile yapılan herhangi grafiksel arayüzlü bir program da belirli bir sürenin sonunda tekrardan bunu geliştirdiğimizi düşünelim. Bu geliştirdiğimiz programı her seferinde üstüne katıp kullanıcılara aynı programı geliştirdiğimiz kadarıyla tekrar indirtmek yerine bunun “Yeni bir Güncelleme Mevcut Lütfen programını güncelle” gibi bir iletiyle kullanıcıyı uyarıp güncellemesini isteyelim…

Buraya kadar herşey gayet güzel ve hoş. Fakat şöyle bir problem var. Bu güncelleme işlemi nasıl oluyor. Yani nasıl yapılıyor mantığı nedir. Anlayacağınız kafamda bu anlamda deli sorular var…
Yoksa bu tür bahsettiğim durumu gerçekleştirmek için kütüphaneler mi mevcut ?

Forumda bu konuda gezinirken yanlış hatırlamıyorsam github ile ilgili konuşulmuştu. Bu güncelleme olaylarını github dan yapılabiliyormuş… Arkadaşlar bu nasıl oluyor peki açıklayabilir misiniz ?

Merakımı mazur görün gerçekten çok merak ediyorum
Cevap vericek arkadaşlarıma şimdiden teşekkür ediyorum

şu videodaki sizce ne kadar kullanışlı. Çünkü sizin yönlendirdiğiniz sayfadan linke tıkladığımda anlamakta gerçekten zorlandım. cx_freeze ile .exe ye dönüştürülerek yapıldığını gösteriyor…(kavramakta zorlandım açıkcası) bu videoyu incelermisiniz rica etsem ?

bu yolladığım linkteki videodakinin aynısıyla oluşturulan bir programı yazdım diyelim ve sizden yüklemenizi istedim ve yüklediniz. Ben programımda belirli updateleri kendimce yaptım ve elle sürümünü değiştirdim bu sizin yüklediğiniz programa nasıl yansır. Çünkü videodaki eleman kendi bilgisayarında işlemi gerçekleştiriyor. Burda önemli olan benim geliştirip sizde güncellenmenin olduğunun sorgulanması

Attığım linklerde güncelleme işlemini nasıl impleme edebileceğinize dair yazılar var. Yazılardan sadece birini anlamadınız diye nasıl hepsini görmezden geliyorsunuz anlamadım.

1 Beğeni

Kullanilan programlarin cogu sistemin paket yoneticisi (Debian ve turevlerinde apt, RH ve turevlerinde rpm, Arch’ta pacman…) tarafindan, cogunlukla otomatik olarak guncelleniyor.

Bunun disinda neredeyse sadece python ve node.js’te gordugum, pip ve npm ile* yonetilip bunlar tarafindan guncellenenler var. Bu guncelleme, paket yoneticileri kutuphane agirlikli olarak tasarlandiklari icin, elle oluyor.

Iki tur programda da internette bir yere bakip “yeni versiyonum var, istersen onu dene” diyenleri gordum. Kendini guncelleyen program bilmiyorum. (Discord var ama o bazen paket indirtiyo, bazen kendisi bir seyler indiriyo, bazen acilmiyo filan… iyi bir ornek degil. Python programi da degil.)


*: Bunlar da bu dillerin gayri resmi paket yoneticileri.

2 Beğeni

Verdiğiniz bilgiler için teşekkür ederim

Bu durum biraz kullanıcıya işkence gibi olmaz mı sizce?
Bunun dışında herşeyi çok güzel anlatmışsınız

Kullanici haberdar oluyor. Bir sorunla karsilasirsa oncelikle yeni versiyonu kurmasi gerektigini biliyor. Bug raporu iletmeden, baskalarina danismadan once de.

Guncellemelerin kendileri dedigim gibi zaten paket yoneticileri uzerinden hallediliyor.

Ha; snap, appimage, flatpak gibi teknolojiler de var. Onlardan bildigim:

Snap: Zaten paket yoneticisi. Programlari otomatik yeniliyor. Kapanmadigi icin buyuk tehlike.
AppImage: Kendi kendini yenileyebiliyor. Kullaniciya ya soruyor ya da haber veriyor, ama hangisi, hatirlamiyorum. Ikincisiyse bu da potansiyel sorun.

2 Beğeni

Tamam teşekkür ediyorum. Yazdıklarınızdan anladığım kadarıyla güncelleme işini programını düzgünce oluştuup üstüne bişeyler ekledikçe kullanıcılarını uyar. Ve onlarda yeni sürümünü yani senin updatelediğin programı indirmelerini sağla

bir yöntem de şu olabilir ilgili güncelleme yeni bir klasör oluşturup güncel versiyonu ona yükleyip eski versiyonun klasörünü siliyor. böylece güncelleme olmuş oluyor.

Merhaba,
Arkadaşlar burada dediğim cümleyi gerçekleştirdiğimi düşünüyorum. Eksik kısmı yalnızca güncellediğimde nasıl bir önceki programa yazdıracağım. Bunu da çözersem tamamdır.

Nasıl gerçekleştirdiğime gelecek olursak yine internetten baktığımda AutoUpdate diye bir modül olduğunu gördüm. İndirdim ve nasıl çalışır nasıl yapılır diye de ona bakarken biraz yol kat ettim. Bu modülle iş yapabilmek için önce GitHub hesabımızın olması gerekiyormuş bu yüzden ilk kez GitHub hesabı oluşturdum. Oluşturduğumuz hesapta önce bir .txt dosyası yüklüyoruz onda da belirlediğimiz üst versiyon yazıyoruz ardından o dosyanın raw linkini kopyalıyoruz…
Ve işte kodlar:

(unutmadan yazayım time, os ve urllib.error modüllerini eklememin sebebi biraz gerçekçi olsun diye sonuçta burada yazdıklarım deneme yanılmayla geldiğim durum)

import time
import AutoUpdate
import os
import urllib.error

try:     
      AutoUpdate.set_url("https://raw.githubusercontent.com/Arif-Helmsys/Version/main/version.txt") # üstte bahsettiğim .txt dosyasının raw linki
      AutoUpdate.set_download_link("https://raw.githubusercontent.com/Arif-Helmsys/Version/main/program.py") # .txt dosyasını okuttuktan sonra indirmesini istediğimiz örnek program
      AutoUpdate.set_current_version("3.0") # .txt ye yazdığımız mevcut sürüm dışında herhangi bir sürüm numarası yazabiliriz
      print(AutoUpdate.is_up_to_date()) # üstte yazdığımız sürüm .txt de yazılan sürümden düşükse yani güncel değilse False, güncelse True değerini ekranda görebiliriz
      
      if not AutoUpdate.is_up_to_date(): # Eğer güncel değilse
            print("indirme işlemi başlıyorr...")
            time.sleep(1)
            print("indiriliyor")
            print(AutoUpdate.get_latest_version()) # .txt deki sürüm numarasını okuyup ekrana yazıdırıyor
            if not os.path.exists("C:\\Users\\Arif\\Desktop\\Updater"): # masaüstünde Updater klasörü yoksa
                  print("klasör oluşturuldu")
                  os.makedirs("C:\\Users\\Arif\\Desktop\\Updater") # masaüstüne Updater klasörünü oluştur
                  AutoUpdate.download("C:\\Users\\Arif\\Desktop\\Updater\\updater.py")  # Oluşturulan klasöre updater.py adında dosyayı indir

            else: # Şayet böyle bir klasör varsa 
                  AutoUpdate.download("C:\\Users\\Arif\\Desktop\\Updater\\updater.py") # updater.py adında dosyayı var olan klasöre indir
      elif AutoUpdate.is_up_to_date(): # Güncelse 
            print("sürümünüz güncel")
except urllib.error.URLError: # internet bağlantısı yoksa
      print("hata internet bağlantınızı kontrol edin")

Teşekkür ediyorum cevaplarınız için

1 Beğeni