Aşağıda ki koda kendim için yazdığım python script’i bulunmakta
Amaç iis üzerinde çalışan bir unigui uygulamasının stop edilip dll dosyasının yedeğinin alınıp, güncel dll dosyasının uygulamanın çalışma dizinine kopyalanması ve iis apppool unu yeniden açılması kodları kullanmak isteyen bir zahmet try except kullansın ben kullanmadım hunharca eleştirebilirsiniz 🙂
import ctypes import sys import time import os import subprocess import shutil import datetime from tkinter import messagebox apppoolname = 'testb2b' iis_app_stop_komutu = r'%SYSTEMROOT%\System32\inetsrv\appcmd stop apppool /apppool.name:"'+apppoolname+"" iis_app_start_komutu = r'%SYSTEMROOT%\System32\inetsrv\appcmd start apppool /apppool.name:"'+apppoolname+"" kaynak_dosya = r'D:\zamazingo\Projects\test-BILGISAYAR\B2B\Win32\Release\testB2B.dll' hedef_dosya = r'C:\websiteleri\testb2b\testB2B.dll' yedek_path = r'C:\websiteleri\testb2b\yedek' ozgun_dosya_adi = 'testB2B.dll' def yedekismitarihsaat(): yedektarihi = datetime.datetime.now() return yedektarihi.strftime('%Y-%m-%d_%H-%M-%S_') def is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except: return False def admin_olarak_calisacak_fonksiyonlar(): if not os.path.exists(yedek_path): # yedek pathi yoksa oluştur os.mkdir(yedek_path) if os.path.isfile(hedef_dosya): # dll dosyasının yedeğini al shutil.copy2(hedef_dosya, yedek_path+'\\' + yedekismitarihsaat()+ozgun_dosya_adi) os.system(iis_app_stop_komutu) # iis app pool stop print('2 sn. Bekleme') time.sleep(2) if os.path.isfile(hedef_dosya): # eski dll dosyasını sil os.remove(hedef_dosya) shutil.copy2(kaynak_dosya, hedef_dosya) # yeni dll dosyasını kaynaktan kopyala os.system(iis_app_start_komutu) # iis pool start ver print('2 sn Bekleme') time.sleep(2) messagebox.showinfo("İşlemler", "İşlemler Tamam") # ekrana işlemler tamam yazdır def main(): # if 1==1: haburası debug için lazım oldu if is_admin(): # admin kontrol admin_olarak_calisacak_fonksiyonlar() else: ctypes.windll.shell32.ShellExecuteW( None, "runas", sys.executable, __file__, None, 1) if __name__ == "__main__": # import edilmeden çağrım kontrol main()