11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

python Pyinstaller exeによる 自動アップデート方法

Posted at

やりたい事

  • アプリを開いたら、アップデートがあるか確認する
  • アップデートがあれば、自動でアップーデートを開始する
  • アプリを再起動する

それでは、いってみよう!

アプリを開いたら、アップデートがあるか確認する

hogehoge.spec

・・略
exe = EXE(pyz,
          Tree('version',prefix='version'), # 追加
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='hogehoge_mac',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True )

versionを追加して、exeを作っておく事。
versionディレクトリの下に、system.jsonをおく

system.json
[
  {
    "version": "1.9"
  }
]
# バージョンチェック
  if common.system["version"] != str(common.information[0].system_version):

作っておいたバージョンとデータベースのバージョンを比較する
jsonの読み込みやデータベースからの取得は割愛ね。

アップデートがあれば、自動でアップーデートを開始する

            # ダウンロード
            file_size = 50029115
            res = requests.get(self.url, stream=True)
            pbar = tqdm(total=file_size, unit="B", unit_scale=True)
            with open(self.save_name, 'wb') as file:
                for chunk in res.iter_content(chunk_size=1024):
                    file.write(chunk)
                    pbar.update(len(chunk))
                pbar.close()

自動アップデート、tqdmでダウンロードすると、見た目が良い感じです。
ポイントは、save_nameをexeとは違う名前で保存します。

アプリを再起動する

            # バッチ実行
            command = "rename.cmd " + self.save_name + " " + self.rename_name + " " + self.delete_name
            subprocess.Popen(command.split())

ダウンロードが終わったら、バッチをキックして、バッチの中で、ファイルの削除とリネームとアプリ起動を行う。

# rename.cmd
taskkill /im %2 /F
timeout 2
del /f %3
timeout 2
rename %1 %2
%3

動いてたプロセスを念のため切ります。
アップデート前のファイルを削除します。
アップデート後のファイルをリネームします。
再起動します。

まとめ

  • 今のバージョンをjsonで持っておく
  • 最新バージョンをデータベースに持っておく
  • pythonでダウンロードする
  • バッチでリネームする

python内では、今動いるアプリの名前を変えることは出来ないので、バッチをキックする必要がある。

11
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?