インストーラのNotarization Service対応

インストーラ形式で配布しているアプリでは、アプリ本体のNotarization対応の他に、インストーラもNotarizationに対応する必要があります。

この記事では、macOSのインストーラのNotarization対応について解説します。

インストーラの作り方のあらまし

macOSでインストーラを作るときには、次のような2つの工程があります。

  1. pkgbuild を使い、インストーラのコンポーネントパッケージを作成する。
  2. productbuildを使い、配布するインストーラを作成する。

これらに加えて、配布形式がディスクイメージでならば、ディスクユーティリティやhdiutilsを使って、dmgファイルを作るという作業が続きます。

最後に、配布するファイルを Apple Notarization Services に登録します。

公証を得るための条件

公証を得るための条件の中で、インストーラに関係してくるのは次の項目です。

  • Developer ID Application証明書、または、Developer ID Installer証明書を使ってコードサイニングを行う。
  • コードサイニング署名にセキュアタイムスタンプを含める。

私はDeveloper ID Installer証明書を使用しました。Developer ID Application証明書でもインストーラの公証を得られるかは未確認です。

コンポーネントパッケージと配布インストーラの関係

配布インストーラは複数のコンポーネントパッケージで構成されます。

配布インストーラのカスタマイズで、インストールするかどうかを選択できる選択肢単位で作成します。カスタマイズ機能は、配布インストーラ内に組み込まれた、コンポーネントパッケージをインストールするかどうかを選択する機能なのです。

そのため、簡易インストールのみの場合はコンポーネントパッケージは一つ作成するだけでもOKです。

一般的には、インストール先のディレクトリ単位で作ることが多いと思います。例えば、次のような感じでしょうか。

  • アプリケーション本体
  • ドライバなどエクステンション
  • プラグインなどの追加モジュール
  • リファレンスやヘルプなどのドキュメントファイル

インストーラの公証を得る

インストーラの公証を得るには、コンポーネントパッケージと配布インストーラの両方で公証を得るための条件を満たすようにします。

コンポーネントパッケージのコードサイニング

コンポーネントパッケージのコードサイニングを行うには、pkgbuild--signオプションと--timestampオプションを指定します。

次のような感じです。

pkgbuild --root root_dir \
         --component-plist components.plist \
         --identifier "com.example.app" \
         --version "1.0.0" \
         --install-location "/Applications" \
         --sign "Developer ID Installer: Example" \
         --timestamp \
         com.example.app.pkg

--signオプションでコードサイニングする証明書を指定し、--timestampオプションでセキュアタイムスタンプを含めるようにしています。

配布インストーラのコードサイニング

配布インストーラのコードサイニングを行うには、productbuild--signオプションと--timestampオプションを指定します。

次のような感じです。

productbuild --distribution "distribution.xml" \
             --package-path "./" \
             --resources "Resources" \
             --sign "Developer ID Installer: Example" \
             --timestamp \
             ExampleApp.pkg

pkgbuildオプションと同じです。--signオプションでコードサイニングする証明書を指定し、--timestampオプションでセキュアタイムスタンプを含めるようにしています。

投稿者プロフィール

林 晃
林 晃macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者
アールケー開発代表。macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者。ObjC/Swift/C++使い。豊富な開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。

基礎から学ぶMetal


「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。

私が初めてGPUプログラミングを行ったとき、どこから手をつけて、学んでいけば良いのか分からず呆然としました。もし、あのとき、これを教えてくれればという部分を解説しました。本書で解説している部分はMetalの基礎となる部分で、Metalを使うときに必ず触れることになる部分です。

詳細

基礎から学ぶSwiftUI


「基礎から学ぶ SwiftUI」というタイトルの本を執筆しました。

SwiftUIの入門書です。

SwiftUIのコンセプトは「ユーザーインターフェイスを作るための最短パスを提供する」「一度学べば(Appleのプラットフォームの)どこにでも適用できる」です。

SwiftUIの概要から始まって、一つ一つのテクノロジートピックに注目しながらSwiftUIとは何か?どんなことができるのか?どのようなコードを書けば良いのかなどを丸々一冊使って解説しています。

詳細

関連記事

  1. Parallels Desktopで古いmacOSゲストをセットアップ…

  2. Docker+NginxでBasic認証を行うまでの3つの手順

  3. WSL (Windows Subsystem for Linux) の…

  4. 【2021/6/23更新】 Xcodeの動作環境

  5. docker+nginx+phpの環境を作る

  6. XcodeでGoogle Test (gtest) を使えるようにセッ…

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事