20160328

cx_freezeで、ショートカットを設定

前回の続き
インストーラーを作ったのに、スタートメニューにも、デスクトップにもショートカットが出てこない。
stackoverflowに答えが載ってた。
要約すると、
setup.pyのsetupのexecutablesを、こうする。
executables = [Executable("a.py", base=base, icon="frame.ico", targetName = 'FIR and FFT.exe', shortcutName ='FIR and FFT', shortcutDir ="ProgramMenuFolder")])
埋め込み画像 1埋め込み画像 2
おめでとうございます!うん、ありがとう!
shortcutDir で、"   "に挟まれて書いてある部分は、適当に作った文字列じゃなくて、
を参照にして作る。
ちなみに、ここに
shortcutDir =["ProgramMenuFolder","DesktopFolder"]
こんな感じで複数入れると、
TypeError: Unsupported type list「リストはサポートされた型ではありません。」的なエラーがくる。
埋め込み画像 3
でも、このままだと、プログラムメニューか、デスクトップのショートカットかどちらかしか選べない。
複数選択できなきゃ困りますよ。
stackoverflowの後半部分にやり方書いてありました。
を参照して、ショートカットテーブルを作って、指定するらしい。
ショートカットテーブルっていうのがあって、上記サイト上では16行あるけど、最後の4行はいらないようです。だから、12行。
これで指定した場合、
shortcut_table = [
    ("DesktopShortcut",        # Shortcut
     "DesktopFolder",          # Directory_
     "FIR and FFT",           # Name
     "TARGETDIR",              # Component_
     "[TARGETDIR]FIR and FFT.exe",   # Target
     None,                     # Arguments
     None,                     # Description
     None,                     # Hotkey
     None,                     # Icon
     None,                     # IconIndex
     None,                     # ShowCmd
     'TARGETDIR'               # WkDir
     )
    ]

msi_data = {"Shortcut": shortcut_table}
bdist_msi_options = {'data': msi_data}
setup( 内の、
options = { 内に、
        "bdist_msi": bdist_msi_optionsを追記
これで、大丈夫だと思う。
埋め込み画像 4
デスクトップに現れたし。
埋め込み画像 5
スタートメニューにも。現れた。
posted by yuchan at 01:38 | Comment(1) | python