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

Mac:初回起動時の署名なしによるgatekeeperに止められる問題をなんとかする #598

Open
Apple-Yuki opened this issue Dec 15, 2021 · 12 comments

Comments

@Apple-Yuki
Copy link
Contributor

内容

初回起動時の署名なしによるgatekeeperに止められる問題をなんとかする

Pros 良くなる点

初めてダウンロードした人などがめんどくさいセキュリティー解除する手間を削減できる

実現方法

おそらく以下のjobをActionに組み込めれば署名されるはず。(多分

jobs:
  build-mac:
    name: build
    runs-on: macos-latest
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    # Workaround: By doing this, if a system dialog around the keychain comes up, for example, the job will not proceed and will spend time until the default timeout.
    timeout-minutes: 30
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: 12.18.1
      # Create: a freely usable keychain
      - run: security create-keychain -p password my.keychain
      # Set:default Keychain
      - run: security default-keychain -s my.keychain
      # Unlock:p12 so that it can be imported
      - run: security unlock-keychain -p password my.keychain
      # Don't lock your keychain with timeouts, etc
      - run: security set-keychain-settings my.keychain
      # Import: the necessary certificates, etc. The -A option is an option that can be used from any program.
      # In fact, p12 is actually obtained from an external source, but it is written as if it were local for clarity.
      - run: security import ./certs/macDeveloperIDApplication.p12 -k my.keychain -A -P ${{ secrets.P12PASS }}
      - run: security import ./certs/macDeveloperIDInstaller.p12 -k my.keychain -A -P ${{ secrets.P12PASS }}
      - run: security import ./certs/developerIdApplication.p12 -k my.keychain -A -P ${{ secrets.P12PASS }}
      - run: security import ./certs/developerIDInstaller.p12 -k my.keychain -A -P ${{ secrets.P12PASS }}
      # Allow access to Keychain from codesign
      - run: "security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k password my.keychain"
      - run: security list-keychains -s my.keychain
      - run: security find-identity -v
      - run: npm ci
      - name: Build App
        timeout-minutes: 15
        run: npm run build
      - run: echo DONE!
      # この後はリリースしたりの処理にしてください。

参考:
electronアプリの署名・公証を自動化する
macOS向けにElectronアプリケーションの署名(code signing)・公証(notarization)をする

VOICEVOXのバージョン

0.9.3

OSの種類/ディストリ/バージョン

  • [x ] macOS

その他

@Hiroshiba
Copy link
Member

たしかにmac版は認証されていないソフトウェアの起動にかなりの手間がかかってしまうので、なんとかしたいなと思いました。
こちらの方法はapple developer登録が必要な方法でしょうか。

サンプルコード、ありがとうございます!

おそらく以下のjobをActionに組み込めれば署名されるはず。(多分)

forkしたあと、実際にreleasesを作ればテストできるかもしれません。
githubリポジトリでreleasesを選んで、適当な名前やタグでreleasesを作成すればgithub actionsが実行できると思います。
もしよかったらdmg作成のプルリクエストを頂けるととても嬉しいです。

@Apple-Yuki
Copy link
Contributor Author

@Hiroshiba
こちらのものはdeveloper契約が必要なものです。
OBSとかどう署名してるんだろうと思って調べたらこんな感じにすれば大丈夫のようでした。

私の方でもやってみますが、一緒にテストできる人もいれば助かります。

@Hiroshiba
Copy link
Member

なるほどです。開発者登録、しないとですね…

@Apple-Yuki
Copy link
Contributor Author

@Hiroshiba ひとまず、forkはしたのですが、forkしただけじゃActions動かないですね。
何かActions secretsとかに設定ありますか?

@PickledChair
Copy link
Member

PickledChair commented Dec 17, 2021

見てみましたが、Actions は動いているように見えます(自己解決されましたか?)。
(追記:テストリリースを作られたようなので、それがトリガーになって Actions が動いたようです。このリポジトリの Actions は main ブランチへの push とリリースの作成がトリガーになる他、手動で動かすこともできます。)

actions_works

@Apple-Yuki
Copy link
Contributor Author

@PickledChair
色々試して、一度forkしたやつを消して再度forkし直したら改善しました。多分。
この件とかで現在色々いじってたので何か突っ掛かってたのかな...

見てみましたが、Actions は動いているように見えます(自己解決されましたか?)。 (追記:テストリリースを作られたようなので、それがトリガーになって Actions が動いたようです。このリポジトリの Actions は main ブランチへの push とリリースの作成がトリガーになる他、手動で動かすこともできます。)

actions_works

@Apple-Yuki
Copy link
Contributor Author

@PickledChair
ビルドは完了しましたが、なぜか私のMac上では初期設定画面で固まりますね…なぜでしょう。

@PickledChair
Copy link
Member

PickledChair commented Dec 17, 2021

こちらのアナウンスに書いてあることが関係していると思います。

現在の自動ビルドは内蔵エンジンとしてバージョン 0.9.3 のエンジンをとってきています。一方、現在の VOICEVOX はバージョン 0.10.preview のエンジンが必要です。このミスマッチにより正常起動しないと考えられます。

手元で試したところ、以下の手順を行った後では正常起動しました:

  1. もともとインストールしていた VOICEVOX.app があれば、AppCleaner で関連ファイルごと(隠しフォルダ内のものも含む)完全削除
  2. https://github.com/Apple-Yuki/voicevox/releases/tag/0.9.3.1-alpha の dmg で今回のビルドをインストール
  3. 内部のエンジン(VOICEVOX.app/Contents/MacOS/ ディレクトリにある)をバージョン 0.10.preview に置き換える(エンジンは先に Mac版の自動ビルド・リリース #399 (comment) で案内した方法で解凍した後、 chmod +x runrun に実行権限を付与しておく)
  4. .env ファイル(VOICEVOX.app/Contents/MacOS/ ディレクトリにある)の内容を以下のものに書き換え:
ENGINE_PATH=./run
VUE_APP_ENGINE_URL=http://127.0.0.1:50021
VUE_APP_GTM_CONTAINER_ID=GTM-DUMMY

@Apple-Yuki
Copy link
Contributor Author

@PickledChair

  1. .env ファイル(VOICEVOX.app/Contents/MacOS/ ディレクトリにある)の内容を以下のものに書き換え:
ENGINE_PATH=./run
VUE_APP_ENGINE_URL=http://127.0.0.1:50021
VUE_APP_GTM_CONTAINER_ID=GTM-DUMMY

直下で探してるんですが.env ファイルが見つからないです...。

@PickledChair
Copy link
Member

先頭に . がつくファイルは不可視ファイルになるので Finder のデフォルト状態では見つかりません。MacOS ディレクトリをFinder で開いている状態で Shift + ⌘ + . を押すと見えるようになります(もう一回同じ操作をするとまた見えなくなります)。

@Apple-Yuki
Copy link
Contributor Author

@PickledChair
コマンドいくらやっても出なかったのでkillall Finder したら出ました。
defaults write com.apple.finder AppleShowAllFiles -bool (true /false)
の方が確実ぽいので今後はこっちでやろうと思います。

@Apple-Yuki
Copy link
Contributor Author

最近、既にActionにありそうな気がしてきたこの頃

https://github.com/search?q=apple&type=marketplace

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants