.exe'yi Güncelleyemiyorum

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ı:


(Amacım çevirdiğim .exe dosyasını güncelleyebilmek)

wb olarak dener misin
with open(“deneme.py”,“wb”)

1 Beğeni

Adsız
şöyle bir hata vermeye başladı

Olarka değilde example.exe olarak kullandığımda resimdeki gibi bir hata alıyorum

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

1 Beğeni

Öncelikle merhaba,

Ne alaka, bu bize nasıl bir yarar sağlayacak ki😕?

Şimdi şöyle yapabilirsin @Arif_RYG ,

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.

g++ -std=c++17 -Wall -Werror experience.cpp -o experience

Daha sonra 1. terminalde şu şekilde çalıştırdım.

./experience

Bu uygulama benden input bekleyedursun.

Şimdi ikinci terminalden de

rm experience

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ı

1 Beğeni

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

1 Beğeni

İyi diyorsun güzel diyorsun, amenna da

Denilmiş, amaç exe dosyasını güncellemek

Ama sen py dosyasını guncelliyorsun. Gerçekten ne yapmaya çalıştığını anlamadım, exe dosyasını py dosyası üzerine mi yazmaya çalışıyorsun?

Bunun başka mantıklı bir açıklaması olamaz.

1 Beğeni

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

2 Beğeni

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

knk çözdüm ben olayı olay sende ya da bende değil biz türkçe karaktrler kullandığımız için kodun 3.satırına

-- encoding: utf-8 -- yazmalıyız sadece print çalıştıran bi dosyada bile yukaruda ki aynı hatadan verdi bütün py dosyalarına

#!/usr/bin/env python3

-- encoding: utf-8 -- yaz

bu aklıma gelmed,

1 Beğeni
#!/usr/bin/env python
# -*- coding: utf-8 -*-
....

Diyorsunuz sanırım deniyorum hemen.

1 Beğeni

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.

1 Beğeni

knk bu senin kodda hata olduğu için değil içinde ki türkçe karakterleri kaldır ş ğ ü ö gibi

1 Beğeni

aslında şöyle etsen a+ modu ile açsan
data = f1.read()
new_app = new_app_data

change_data = data.replace(data,new_app) yapsan yine aynı dosyaya kaydetsen

1 Beğeni

Esağfurullah. Hocam diyorsunuz ki indirme bağlantısını kullan. Buna göre


Hangi linki çekmeliyim?

Exe li olanı bı denesene ne oluyor?

https://github.com/Arif-Helmsys/test/releases/download/sa/deneme.exe

Edit: Kodların güncel olarak githubinda duruyorsa ben de ilgileneyim bi o zaman. Ama ben linux kullanıyorum ona göre :wink:

Sanırım iş .py dosyasını güncellemekle bitmiyormuş. Öğrenmem gereken bazı şeylerde varmış. Umarım öğrenebilirim…

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

2 Beğeni