Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

インストール終了時に古いプロセスを終了する #73

Merged
merged 1 commit into from
Dec 10, 2023

Conversation

mtgto
Copy link
Owner

@mtgto mtgto commented Dec 10, 2023

インストーラでバージョンアップした際、古いバージョンが終了しない限り新しいバージョンに変わりません。

この修正ではインストーラのpostinstallスクリプトを追加し、インストールの終了後に古いバージョンを終了するようにします。

kill/pkillでシグナル送信する形式では、通常のアプリケーション終了時に行っているユーザー辞書の永続化の処理が呼ばれないようだったので、osascript (AppleScript) を使って終了するようにしています。
osascriptなしでシェルスクリプトから正常終了する方法ありそうな気もするのですが見つからなかったので見送りました。

AppleScriptで application id "net.mtgto.inputmethod.macSKK のようにBundleIDを指定して書く場合、アプリケーションがみつからない場合、

❯ osascript -e 'tell application id "net.mtgto.inputmethod.macSKK2" to quit'
5:51: syntax error: application id "net.mtgto.inputmethod.macSKK2"を取り出すことはできません。 (-1728)

のように終了コード1で死んでしまうので、lsappinfoで起動中か確認するようにしています。
ユーザーが見るところではないので、 osascript ... || true で握り潰しちゃってもいいんだけど。

@mtgto
Copy link
Owner Author

mtgto commented Dec 10, 2023

シグナルでapplicationWillTerminateが呼ばれないならシグナルをハンドルして自分でterminateすればよいのでは、というアイディアをStackOverflowで見かけた。賢い。
https://stackoverflow.com/a/54582388/6945346

@@ -0,0 +1,5 @@
#!/bin/bash -eu
asns=$(/usr/bin/lsappinfo find bundleID=net.mtgto.inputmethod.macSKK)
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lsappinfo find はbundleIdentifierでmacOSアプリを探せて便利だけど、存在しないときにも終了コード0で改行だけ出力されるのでシェルスクリプトではちょっと使いづらい。

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lsappinfo app -app <bundleID> は同じbundleIDをもつプロセスが複数あるときも見つからないときもどっちも改行文字列だけで終了コード0で死ぬのでより使いづらい。

@mtgto
Copy link
Owner Author

mtgto commented Dec 10, 2023

ひとまずこれで様子を見てみて、開発マシンと別環境にインストールして試してみる。

@mtgto mtgto merged commit 4fb18c1 into main Dec 10, 2023
2 checks passed
@mtgto mtgto deleted the quit-old-app-after-install branch December 10, 2023 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant