ctypes を使用して winsparkle C ライブラリを呼び出す最小限の python スクリプトを作成しようとしています。コードは、行ごとに実行した場合にのみ機能win_sparkle_check_update_without_ui()
し、ウィンドウがポップアップして、期待どおりに更新をダウンロードします。しかし、スクリプトを通常どおり実行すると、この関数は呼び出されてすぐにスキップされ、ハッキーな time.sleep オプションを追加しない限り、開いたままになりません。
この関数を実行し、ユーザーがポップアップを閉じるまで開いたままにする適切な pythonic の方法は何ですか?
from ctypes import CDLL
import logging, time
class UpdateAgent(object):
def __init__(self, appcast_url):
self.appcast_url = appcast_url
def check_for_update(self):
winsparkle = CDLL("WinSparkle.dll")
url = self.appcast_url
winsparkle.win_sparkle_set_appcast_url(url.encode('ascii', 'ignore'))
winsparkle.win_sparkle_set_app_details(
unicode('Company'),
unicode('myapp'),
unicode(9))
winsparkle.win_sparkle_init()
winsparkle.win_sparkle_check_update_without_ui()
#time.sleep(10)
def run(self):
try:
self.check_for_update()
except Exception as e:
logging.info('%s' % (e))