0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flet、PyinstallerでWindowsアプリ作成時のアプリアイコンの設定

Last updated at Posted at 2024-10-12

Flet、PyinstallerでWindowsアプリを作成する時、EXEのアイコンはPyinstallerで設定できるが、タスクバーのアイコンがFletの魚みたいなアイコンなのが、ちょっと嫌でした。
検索してみても、ぴったりな記述が見つからなかった・・・のは、もしかすると当たり前すぎて書かれていないだけなのかもしれませんが、私は少し困っていたので記しておきます。

結論

アイコンファイルがルートにあるとして、次のように書くとタスクバーのアイコンがEXE化後も設定されます。
specは、one fileにしないパターンです。

flet.py

def resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)


page.window.icon=resource_path("icon.ico")
flet.spec
# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['flet.py'],
    pathex=[],
    binaries=[],
    datas=[('icon.ico','.'),],     # <-- icon
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

splash = Splash('splash.png',binaries=a.binaries,datas=a.datas,)
exe = EXE(
    pyz,
    splash,                   # <-- splash target
    a.scripts,
    [],
    exclude_binaries=True,
    name='Fletexe',
    debug=False,     #
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,   #
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='.\icon.ico',     # <-- exe icon
)
coll = COLLECT(
    exe,
    splash.binaries,     # <-- splash binaries
    a.binaries,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='Fletexe',
)

resource_path については、下記の記事を参考にしています。

挙動的には、EXE起動後、最初はFletの魚のようなアイコンでタスクバーに表示されますが、その後アイコンファイルに書き換わる、というような感じになります。
少し思っていたのとは違いますが、許容できるレベルかなと思っています。

確認したversion

flet 0.24.1
pyinstaller 6.10.0

その他の方法

Flet Pack

コマンドでのFletのexe化ツールで、Flet packと始めることで、exe化できるということです。この時アイコンも設定できるようです。
ただ、Flet pack は、pyinstallerのラッパーのようなので、恐らくやっていることはpyinstallerと同じだと予想して試してません。

Flet build

Flet buildとすることで、アプリ化できるようです。Flutter SDKまでセットアップはしましたが、スムーズにいかなかったので、そこで諦めて最後まで試してません。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?