スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[iOS] Distributing Enterprise Apps for iOS 4 Devices (iOS4 デバイスへのエンタープライズアプリケーションの配布)

業務で iOS Developer Enterprise Program を扱っているのですが、
やたら Xcode の更新はあるし、Webのインタフェースはちょいちょい変わるしで、
昔の解説ページなど見てもそのものずばりの情報が少なかったり。

で、iTunes や iPhone 構成ユーティリティを使わずに、
(もちろんエンタープライズなので Apple store も通さずに)
インターネット経由で配布できる方法を探していたのです。

確かにドキュメントはあるのです。

Distributing Enterprise Apps for iOS 4 Devices
http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html

ただいかんせん英語のうえ、必ずしも最新の状況にあったドキュメントというわけでもないみたい。
機械訳してもさっぱりなので、めんどくさいけれども理解するためにところどころ適当和訳を行いました。
(Last updated: 2011-03-04 のものから訳を行いました)

たぶん和訳そのままだといろいろ問題があるはずなので(引用の範囲かどうのこうの)、
ポイントとなるべきところだけ抜粋してまとめます。



■ 概要 
  社内・組織内利用のアプリケーションを配布するための手順は以下の通りになります。
  ・"iOS Developer Enterprise Program" の登録を行います。
  ・アプリケーション配布の準備を行います。
  ・アプリケーション使用の認証を行う、署名されたプロビジョニングプロファイルを作成します。
  ・そのプロビジョニングプロファイルを用いてアプリケーションをビルドします。
  ・ユーザに配布します。

  アプリケーションの配布の方法:
    iTunes を用いる
    iPhone 構成ユーティリティを用いる
    セキュアなサーバに設置し、ワイヤレスでインストールする



 ("iOS Developer Enterprise Program" の登録など割愛。
  これに関しては説明されているサイトが多いと思います。)

 (以降、iTunes や iPhone 構成ユーティリティでのインストールなども割愛)


■ ワイヤレスにアプリケーションをインストールする

iOS 4 では、iTunes や iPhone 構成ユーティリティを使わずに、社内・組織内利用のアプリケーションをワイヤレスで配布することに対応しています。

必要要項:
  ユーザを認証してアクセスできる、セキュアな Webサーバ
  .ipa ファイルフォーマットの 社内・組織内利用の iOS アプリケーション
  このドキュメントで説明されている XMLマニフェストファイル
  Apple の iTunes サーバにアクセスできるネットワーク設定

アプリケーションのインストールはシンプルです。ユーザは配布者が用意した Webサーバから iOS 4 デバイスにマニフェストファイルをダウンロードします。
マニフェストの参照情報によって、デバイスに対してアプリケーションをインストールする指示がなされます。

SMS や 電子メールへの記載、または別に作成したエンタープライズアプリケーションに埋め込むことで、マニフェストファイルをダウンロードするURLを配布できます。

アプリケーションを配布するための Web サイトをどうデザインするか、ホスティングするかは、自由です。ただし、インターネットやイントラネットを使うのに、BASIC認証や、ディレクトリ単位での認証などを使って、ユーザを確実に認証する必要はあります。
アプリケーションとマニフェストは、直接 HTTP や HTTPS を使ってアクセスされない場所に設置することが可能です。



ざっくりといいますと、

1) アプリケーションをアーカイブ化した .ipa ファイル
2) その .ipa ファイルについて記載した .plist のマニフェストファイル
3) マニフェストファイルへのリンクをつけたHTMLページ


これらを用意して、Webページにアップすればいいと。
ただし、その Webページは誰でもアクセスできると困るから
社内のイントラネットとか、外部公開しているサーバだったら
BASIC認証とかそういうのつけようね、ということ。

■ワイヤレスにエンタープライズアプリケーションを配布するための準備

ワイヤレスにエンタープライズアプリケーションを配布するための準備として、アーカイブバージョンとして、.ipa ファイルとワイヤレス配布を可能にするマニフェストファイルをビルドします。

Xcode では、“Build > Build and Archive”コマンドで、アプリケーションのアーカイブを作成します。
アーカイブされたアプリケーションのオーガナイザで、アプリケーションを選んで“Share Application…”ボタンをクリックします。続いて“Distribute for Enterprise…”ボタンをクリックします。Xcode がマニフェストファイルを作成するための情報を尋ねられます。マニフェストファイルに書き込まれる情報については後述します。より多くの情報を求められる場合は、iOS Dev Center にアクセスしてください。



Xcode4 になってからメニューに変更があります。 “Product > Archive” がいいようです。その後の流れも変わっています。

参考:Xcode4.0でのIPAファイルの作り方
http://appteam.blog114.fc2.com/blog-entry-175.html

■ワイヤレスマニフェストファイルについて

マニフェストファイルは、plist(プロパティリスト) の XML形式です。iOS4 デバイスが、Web サーバからアプリケーションを探してダウンロードし、インストールするために使います。マニフェストファイルは Xcode によって作成され、エンタープライズ配布のためにアーカイブされたアプリケーションを公開するときに使われる情報として使われます。
「ワイヤレスにエンタープライズアプリケーションを配布するための準備」を参照してください。

このドキュメントの末尾に、マニフェストファイルのサンプルがあります。
下記の項目が必須になります。

項目       | 説明
URL       : アプリケーション(.ipa)ファイルの http あるいは https の完全なURL
display-image  : ダウンロード・インストール時に表示される 57 x 57ピクセルの PNG 画像です。画像の完全なURLを指定します。
full-size-image : iTunes で表示される 512 x 512 ピクセルの PNG 画像です。
bundle-identifier: アプリケーションの識別子です。Xcode のプロジェクトで指定します。
bundle-version  : アプリケーションのバージョンです。Xcode のプロジェクトで指定します。
title      : アプリケーションの名前です。ダウンロード、インストール中に表示されます。

オプショナルキー

サンプルのマニフェストファイルには、オプショナルキーが説明されています。
たとえば、アプリケーションファイルが大きいためにTCP通信中でのエラーチェックを行いたい場合には、MD5 キーを使用することができます。



Xcodeから "Save for Enterprise Distribution" をチェックすれば
マニフェストファイルも生成されます。
中身はただの XML ファイルなので、後から修正しても構いません。
重要なのは URL です。アプリケーションの位置がここで指定されるので、
マニフェストファイルへのアクセスだけでインストールが可能になっているわけです。

Webサイトの構築

認証したユーザがアクセスできるWebサイトの領域に、これらのものをアップロードしてください。

  アプリケーションファイル(.ipa)
  マニフェストファイル(.plist)


Webサイトのデザインは自由です。マニフェストファイルへのリンクが記載されているだけのシンプルなものでも構いません。
ユーザがそのページのリンクをタップすれば、マニフェストファイルがダウンロードされ、そこで記載されたアプリケーションもダウンロードされます。

リンクの例はこのようになります。

<a href="itms-services://?action=download-manifest&url=http://example.com/
manifest.plist">Install App</a>


アーカイブされたアプリケーションへのリンクは付け加えないでください。マニフェストファイルが読み込まれるときに、アプリケーションはダウンロードされます。
URLの記載としては itms-services プロトコルになっていますが、iTunes Store とは関係がありません。

サーバのMIMEタイプ設定

マニフェストファイルとアプリケーションファイルが正しく送られるために、Webサーバに設定が必要になるかもしれません。

Mac OS X サーバでは、Server Admin で以下の MIMEタイプを設定します:
application/octet-stream ipa
text/xml plist


IIS では IIS Manager でサーバのプロパティに次のMIMEタイプを追加します:
.ipa application/octet-stream
.plist text/xml



itms-services:// でマニフェストファイルにリンクした
HTMLファイルを作成し、アップロードします。
.ipa .plist のファイルが認識できない場合は、Webサーバで MIME タイプを設定します。

ワイヤレス配布でのトラブルシューティング

“unable to download”というメッセージで配布が失敗したら、下記を確認してみてください。

  ・アプリケーションが正しく署名されているか、iPhone 構成ユーティリティを用いてインストールができるか確認してください。
  ・マニフェストファイルでの、アプリケーションファイル(.ipa)へのURLが正しく、アクセスできるかを確認してください。
  ・マニフェストファイルへのリンクが正しく、ファイルにアクセスできるかを確認してください。



これはそのままですね。ケーブルでつないでのインストールが可能か、
リンクなどが正しいかなどを確認します。

ネットワーク環境での必須項目
デバイスが閉じたネットワーク環境にあるとき、デバイスがこれらのサイトにアクセスできるようにする必要があります。

ax.init.itunes.apple.com
デバイスは現在のファイルサイズの制限をネットワークを通じて問い合わせます。接続ネットワークでのサイトに接続できない場合、インストールは失敗します。

ocsp.apple.com
プロビジョニングプロファイルで使われた署名を確認するために問い合わせます。
"Certificate Validation" の項を参照ください。



以降、"Providing Updated Apps", "Certificate Validation", "Sample Manifest File" は割愛します。

スポンサーサイト

テーマ : Apple
ジャンル : コンピュータ

ThinVNC SDK についてのざっくり訳

ThinVNC SDKをダウンロードしたのだけど、
どうせヘルプを訳しながら読むので、こっちにざっくりした訳を転記しながら読み進める。

ThinVNC SDK
http://www.thinvnc.com/thinvnc/sdk.html

ここからダウンロードできる・・・はずだけど、できないよね?

Download ThinVNC | HTML5 Remote Access
http://www.thinvnc.com/download/index.html

ここからだとダウンロードできました。
ダウンロードしてインストールすると、インストールフォルダにヘルプファイルが作成されます。

下記に訳文。



■ イントロダクション

ThinVNC は HTML5 を使用したリモートデスクトップソリューションで、ThinVNC サーバ、Javascript または Windows 上で動作するクライアントで構成されます。

ThinVNC SDK は、開発者が自分で開発したアプリケーションに ThinVNC を組み込むための ActiveX コンポーネントのセットです。 ThinVNC SDK は、.NET framework、あるいはその互換である Mono framework を含む ActiveX を使う開発環境やフレームワークに適しています。

ThinVNC SDK は以下のものを含んでいます。

· ActiveX サーバ コンポーネント
· ActiveX クライアント コントロール
· Javascript クライアント ライブラリ



ActiveX サーバ コンポーネント

ActiveX サーバ コンポーネントで、HTTPリクエストを受けて Windows の画面をキャプチャしてクライアントに送り返す、サーバアプリケーションを作成することができます。

ThinVnc と ThinWebServer の2つのコンポーネントがあり、ThinVnc はすべてのキャプチャロジックを含み、いっぽう ThinWebServer はクライアントと通信を行う HTTP サーバとなります。


ActiveX クライアント コントロール

ActiveX コントロール ThinVncClient は、ThinVNC サーバ(もしくは、ThinVNC SDK をベースとして作成されたサーバアプリケーション)と接続し、リモート環境を表示するクライアントアプリケーションを作成できます。


Javascript クライアント ライブラリ

クライアント側では、DIVエレメントと Javascript のオブジェクトによって、Webブラウザにリモート環境を表現することができます。

これは jQuery を用いた、基本的なコードです:
(割愛)


■ はじめに

はじめに、いくつかの簡単な例を試してみましょう。

· ThinVNC サーバの作成
· ウィンドウ、プロセスのフィルタリング
· ThinVNC クライアントの作成


ThinVNC サーバの作成

かんたんな ThinVNC サーバを Microsoft Visual Studio を使って作成しましょう。

1) 新しいプロジェクトを作成します。
Microsoft Visual Studio を起動し、新しい Windows フォームアプリケーションのプロジェクトを作成します。名前は "ThinVncServer" にしましょう。

2) ActiveX ライブラリ "ThinVNC Server" の参照を追加します。
ソリューションエクスプローラで ThinVncServer プロジェクトのノードを右クリックし、「参照の追加」を選びます。

#詳しくは書かれていませんが、"COM" タブから "ThinVNC Server Library" を追加すればいいはずです。

3) フォームにいくつかのコントロールを追加します。
(図は割愛)

#ポートを指定するテキストボックス、モードを選択するラジオボタンを配置します。

4) コードを追加します。
初期化するコードを追加します。
(コードは割愛)
開始ボタンのコードを追加します。
(コードは割愛)

5) 実行して動きを確認します。

コンパイルしてプロジェクトを実行します。ポート番号をテキストボックスに入力し、開始ボタンを押します。
多くの場合には、Windows ファイアウォールが例外を設定するか尋ねてきます。そこで例外を追加してから、Webブラウザで http://(サーバになったあなたのPC):(ポート) と入力してアクセスします。(サーバとは別のマシンからが望ましいです)
これで、指定したPCのデスクトップを見ることができるでしょう。


ウィンドウ、プロセスのフィルタリング

先ほどの例に続けて、フォームに設置したラジオボタンにコードを追加しましょう。
これによって、デスクトップ全体か、アプリケーション単位のどちらにするかを選択できます。

ラジオボタンの CheckedChanged イベントにハンドラを追加:
(コードは割愛)

再度コンパイルして実行し、"This Application" を選択してみましょう。
クライアントの Webブラウザには、このアプリケーションのウィンドウだけが表示されます。


ThinVNC クライアントの作成

かんたんな ThinVNC クライアントを Microsoft Visual Studio を使って作成してみましょう。

1) 新しいプロジェクトを作成します。
Microsoft Visual Studio を起動し、新しい Windows フォームアプリケーションのプロジェクトを作成します。名前は "VncClient" にしましょう。

2) ツールボックスから、ThinVNC クライアントコントロールを追加します。
ツールボックスを開き、右クリックから「アイテムの選択」を選びます。"COM コンポーネント" タブ を開いて "ThinVNC Client Control" を見つけて、チェックをつけます。

#この時点でツールボックスの「全般」に追加されるはずです。

3) ツールボックスから "ThinVNC Client Control" を見つけ、フォームにドロップします。テキストボックスと開始ボタンを下記のように追加します。

(図は割愛)

4) 開始ボタンにコードを追加します。
(コードは割愛)

5) 実行して試します。


■ ActiveX リファレンス

◎ThinVNC コンポーネント
このコンポーネントは ThinVNC サーバを作成する際に必要となる、主要なコンポーネントです。

<プロパティ>
SessionCount プロパティ (読み込み専用)
現在開かれているクライアントのセッション数を返します。

ActiveX/.NET Syntax
   [int =] ThinVnc.SessionCount
Delphi Syntax
   [integer :=] ThinVnc.SessionCount


Scraper プロパティ (読み/書き)
コンテンツソースとして使われる Scraper インタフェースを参照/設定します。

ActiveX/.NET Syntax
   ThinVnc.WebServer [= IThinAbstractScraper]
Delphi Syntax
   ThinVnc.WebServer [:= TThinAbstractScraper]


WebServer プロパティ (読み込み専用)
クライアントとの通信に使われる ThinWebServer インタフェースを参照します。

ActiveX/.NET Syntax
   [IThinWebServer =] ThinVnc.WebServer
Delphi Syntax
   [TThinWebServer :=] ThinVnc.WebServer


<イベント>
OnSession Started イベント
新たなクライアントセッションが開始したときに発生します。

ActiveX/.NET Syntax
   void OnSessionStarted ()
Delphi Syntax
   procedure OnSessionStarted (sender:TObject)


OnSessionEnded イベント
新たにクライアントセッションが終了したときに発生します。

ActiveX/.NET Syntax
   void OnSessionEnded ()
Delphi Syntax
   procedure OnSessionEnded (sender:TObject)


◎ThinWebServer
このコンポーネントは、HTTP もしくは Webソケットを使用したクライアントから ThinVNC サーバにアクセスするための Web サーバです。

<プロパティ>
DefaultPage プロパティ (読み/書き)
デフォルトのHTMLページを参照/設定します。

ActiveX/.NET Syntax
   WebServer.DefaultPage [= string]
Delphi Syntax
   WebServer.DefaultPage [:= string]


HttpActive プロパティ (読み/書き)
サーバの http プロトコルをアクティブ/非アクティブにします。

ActiveX/.NET Syntax
   WebServer.HttpActive [= bool]
Delphi Syntax
   WebServer.HttpActive [:= boolean]


HttpEnabled プロパティ (読み/書き)
サーバの http プロトコルを使用可能/不可にします。

ActiveX/.NET Syntax
   WebServer.HttpEnabled [= bool]
Delphi Syntax
   WebServer.HttpEnabled [:= boolean]


HttpsActive プロパティ (読み/書き)
サーバの http プロトコルをアクティブ/非アクティブにします。

ActiveX/.NET Syntax
   WebServer.HttpsActive [= bool]
Delphi Syntax
   WebServer.HttpsActive [:= boolean]


HttpsEnabled プロパティ (読み/書き)
サーバの https プロトコルを使用可能/不可にします。

ActiveX/.NET Syntax
   WebServer.HttpsEnabled [= bool]
Delphi Syntax
   WebServer.HttpsEnabled [:= boolean]


HttpPort プロパティ (読み/書き)
http プロトコルの使用するポートを参照/設定します。

ActiveX/.NET Syntax
   WebServer.HttpPort [= int]
Delphi Syntax
   WebServer.HttpPort [:= integer]


HttpsPort プロパティ (読み/書き)
https プロトコルの使用するポートを参照/設定します。

ActiveX/.NET Syntax
   WebServer.HttpsPort [= int]
Delphi Syntax
   WebServer.HttpsPort [:= integer]


RootPath プロパティ (読み/書き)
Web ファイルへのルートパスを参照/設定します。

ActiveX/.NET Syntax
   WebServer.RootPath [= string]
Delphi Syntax
   WebServer.RootPath [:= string]




※ 以降気が向けば部分的に更新


VNC詳細解説―異機種OS対応GUIとRFBプロトコル (OpenDesign BOOKS)VNC詳細解説―異機種OS対応GUIとRFBプロトコル (OpenDesign BOOKS)
(2000/04)
中村 文隆



なんか詳しそうな本これぐらいしかない。11年前の本だもんなあ。
ソースのサンプルも C だし。

テーマ : 仮想化
ジャンル : コンピュータ

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。