Merhaba.
Başlıkta belirttiğim sorunum aslında önceki konularımla ilişkili. Şöyle, Güncelleme aldıktan sonra bunu .py dosyasında işleyebiliyorum(betik dosyasında değişiklik oluyor) fakat iş bu güncelleme işlemini gerçekleştirebileceğim bir arayüze geldimi çakılıp kalıyor gibi yani .exe ye çeviriyorum açıp güncelle butonuna basıyorum… Bastıktan sonra .py dosyası güncelleniyor değişiklikler uygulanıyor fakat aynı py dosyasının .exe ye çevirilmiş halinde herhangi bir güncelleme işlemi (değişiklik) olmuyor bunu nasıl düzeltebilirim.
Umarım yeterince açıklayıcı anlatabilmişimdir…
Teşekkür ediyorum şimdiden…
Konumu şöyle güncelliyorum…
from tkinter import *
from urllib.request import urlopen
import sys
import os
def update():
url1 = "https://raw.githubusercontent.com/Arif-Helmsys/test/main/up-to-date.py" #Güncel Betik dosyası
data1 = urlopen(url=url1)
with open("example.py","r",encoding="utf-8") as f:
var1 = []
var2 = []
for i in data1:
var1 += [i.decode("utf-8")]
for i in f:
var2 += [i]
if var1 == var2:
print("Güncell!")
else:
with open("example.py","w",encoding="utf-8") as h:
for i in var1:
h.write(i)
print("Program Güncellendi")
python = sys.executable
os.execl(python, python, *sys.argv)
root=Tk()
root.geometry("300x200")
root.config(bg="white")
Button(root,text="Güncelle",command=update).pack()
root.mainloop()
"example.py" olduğunda pyinstaller ile .exe ye çevirdiğim vakit Güncelle Butonuna bastığımda aynı isimdeki .py dosyasını güncelliyor. Belki aynı mantıktır diye bu sefer "example.py"'ı "example.exe" olarak değiştirirsem düzelir diye düşündüm. Fakat şöyle bir sıkıntı olduğunu gösterdi(problemi görebilmek için pyinstaller ile .exe ye dönüştürürken terminalin açılmasını istedim). Şöyle bir sıkıntı:
str → encoding bytes → decoding
byte veri tipi encoding fonksiyonuna ihtiyaç duymaz encoding yerini silin
sizin amacınız eski mi yeni mi kontrol etmek eğer güncel değilse yeni dosyayı requests ya da urllibi ile indirip yeni bi dosyaya kaydedip exe haline çevirmek doğru mu
Uygulamanın güncellenmiş exe dosyasını github’da sun(py yi sunduğun gibi).
Daha sonra önceki konularda yaptığın gibi versiyonları kontrol et, eğer farklı ise güncellenmiş exe dosyasını github ından çek.(urllib ile halledebilecegini söylememe gerek yok sanırım)
Bu arada sana denediğim bir şeyi yazacağım.
İki tane ayrı terminal açtım ve kendi yazdığım cpp dosyasını 1. terminalde şu şekilde derledim.
diyerek çalışan çalıştırılabilir dosyayı çalışırken sildim.
En sonunda da 1. terminale tekrar geçip terminalde çalışan ./experience için gerekli inputları verdim ve sonuç:
Normal bir şekilde çalıştı.
Şimdi buradan şunu çıkarabiliyorum ki, çalışan dosyayı çalışırken silersek program çalışmasına devam edebiliyor.(en azından arch Linux da denedim oldu.) Bundan yararlanarak exe dosyasını da ilgili exe dosyası çalışırken güncelleyebilirsin. Uygulama yeniden acılınca da yeniden başlar uygulama.
Diye düşünüyorum, yanlışım varsa lütfen uzman insanlar düzeltsin bu yanlışımı
binary olan dosyaları okumaya çalıştığımızda okumaz çünkü r yaparsak ya da w sadece utf-8 karakterlerini yazabilirzi ama rb wb yaparsan her dosyayı okuyup yazabiliriz exe ikili sistem dosyasıdır o yüzden ve evet dosyayı sildiğinde çalışır çünkü onu kaydeder ve saklar ama
hayır ben ilk başta exe dosyasını okuyor zannetim exe dosyasını alıyor diye anladım ama sonra pure py indirip sonra güncelliyormuş orda problem bende knk
hocam bilgisayar başına şimdi geçtim. Şöyle birşey söyleyebilir miyim? .py bildiğiniz üzere bir python dosyası ve içerisinde kodlar yer alıyor. .exe ise bir uygulama. belki yanlış telaffuz etmiş olabilirim exe dosyası diyerek. Bunu githuba nasıl yazdırabilirim ki py dosyasını yaptığım gibi ?
Düzeltme--------
Sanırım böyle oluyor doğru mudur hocam
mesela gistte pdf dosyasını bu linkten çekebilirsin urllib ile(denemedim)
bi de sanki github reposunda release diye bir şey vardı, eğer kullanıcı source code derlemek istemezse diye hazır derlenmiş dosya koyuyorlardı(bunu da incelemedim, müsait bir zamanda inceleyip dönerim)
edit: attığın link, benim dediğim şey. Fark etmemişim pardon.
hocam herhangi bir proje geliştirip atmadım githuba. Farketmişsinizdir zaten verdiğim isimlerden. Eğer ilgilenecekseniz siz benden daha iyi bileceğiniz için benim yazdığım bu güncelleme scriptini kendinize uyarlayıp exeyi güncelleyebilirseniz, dönüş yapmanızı çok isterim. Benim repomla uğraşmamış olursunuz hem.
valla ben yaptım exe falan çevirmiyor pure py alıp yerelde derliyor çalıştırıyor ha bu arada pyinstaller exe dosyasını bilgisayarın durdurmaz siler antivirüsü kapat