Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Macアプリのインストーラ作成ツールSwift版

1,176 views

Published on

2017/05/15に開催されたBUKURO.swift x AKIBA.swift 合同勉強会の発表資料です。

Published in: Software
  • Be the first to comment

Macアプリのインストーラ作成ツールSwift版

  1. 1. Macアプリのインストー ラ作成ツール Swift版 2017/05/15 BUKURO.swift x AKIBA.swift 合同勉強会 アールケー開発 林 晃 Twitter: @studiork http://www.rk-k.com/
  2. 2. 自己紹介 • 林 晃 • アールケー開発 代表 (2005年開業) • NPO法人MOSA 理事 • iOSとMac用のソフト開発 (画像処理、動画編集、デバ イス制御、SDK開発とかが多 いです) • 技術書の執筆 小学生でもわかるプログラムの世界 Swift逆引きハンドブック Objective-C逆引きハンドブック etc…
  3. 3. インストーラが必要な理由 • App Store外での配布 • 独自ドライバ (kext) • 複雑なインストールプロセス • 配布形式は dmg
  4. 4. インストーラ作成の流れ ビルド コードサイニング (アプリ用) ディレクトリ 配置 コンポーネント パッケージ作成 インストーラ パッケージ作成 配布イメージ 作成
  5. 5. 使用するプログラム Xcodeなど codesign cp pkgbuild productbuild hdiutil
  6. 6. 毎回編集が必要な所 Xcodeなど codesign cp pkgbuild productbuild hdiutil
  7. 7. 毎回変わる pkgbuild --version オプション productbuild distributionファイルの中 hdiutil 作成するdmgの名前
  8. 8. コマンドラインツール • 毎回変わるものを専用ツールで更新 • 一連の流れを自動化 • 2点を押さえればOK ★ コマンドライン引数 ★ サブプロセス
  9. 9. コマンドライン引数 var args = CommandLine.arguments 文字列の配列 [1]以降にコマンドライン引数
  10. 10. サブプロセス let codesignProcess = Process() codesignProcess.launchPath = "/usr/bin/codesign" codesignProcess.arguments = [ "--deep", "--timestamp=none", "-fs", configuration.certificationName, dstPath ] codesignProcess.launch() codesignProcess.waitUntilExit()
  11. 11. DEMO • コードサイニング • pkg作成とdmg作成
  12. 12. 将来バージョンの目標 • カスタムスクリプト部分の自動更新 • ケアレスミスの検出 • より汎用的に
  13. 13. ありがとう ございました! (c) 2017 Akira Hayashi

×