kazuk は null に触れてしまった

C# / .NET 系技術ネタ縛りでお送りしております

Windows 8 & RT でのサイドローディング


年末年始辺りから調べ初めて、一応これで確定かなと思える段階になりましたので記事おば。

サイドローディングって何ですか?

一般的に Windows 8 / RT ではアプリケーションはマイクロソフトの運営する Windows アプリストアから入手するようになっています。( Windows 8 のデスクトップ環境はこの限りではありません)

Windows アプリストアは全世界に向けて公開されている物なので、企業内利用を前提とするアプリケーション(いわゆるインハウスアプリケーション)の配布と展開には向きません。特に企業秘密なロジックやその他が外部に漏れないように管理したいという場合には向きません。

これにたいする回答がサイドローディングという事になり、Windowsアプリストアを経由せずにアプリケーションをインストールする事ができます。

サイドローディングが可能なクライアントOS

Windows 8 の場合には家庭向けの位置づけがされている無印エディションのみサイドローディングができません。

Windows 8 Enterprise の場合にはドメイン参加時点でサイドローディングが可能になります。

Windows 8 Pro ではOSに追加で Sideloading Activation Key を入手、インストールする事により Sideloading が可能になります。(ただし 一般の Retail 版 Windows Pro ではできません、ボリュームライセンスプログラムによって入手されたWindows 8 Pro が必要という事です。 参考情報1 )

Windows RT は Pro と同様に Sideloading Activation Key を入手、インストールする必要があります。

Sideloading Activation Key の入手

以下のいずれかのライセンスプログラムに加入していれば、ライセンスプログラムの特典として無償入手が可能です。

  • Select / Select Plus による Windows ソフトウェアアシュアランス
  • Windows を含む Enterprise Agreement / Enterprise Subscription Agreement
  • 教育組織では Windows を含む Enrollment of Education Solutions ないしは Campas/School Agreement

上記ライセンスプログラムに加入していない場合には、 Select / Select Plus から購入する事ができます。

製品名 「WinSdLdH 8 … 100Lic EntSideload」 …部にはライセンスプログラム固有なワードが入ります。

WinSdLdH EntSideload の Bing 検索結果

会社として付き合いのあるオープンライセンスのリセラーにこれで問い合わせれば見積もりくれるでしょうし、売ってくれるはずです。

最低でも 100 ライセンスのパックですので、数台の物にインストールするのは結構割に合わないと思います。

Side Loading Activation Key はマシン単位です、1ライセンスは1台にインストールでき、マシンと完全に結び付けされますので、マシンを廃棄その他した場合には消尽する物と考えてください。

ポリシーによるサイドローディングの許可

グループポリシーの「信頼できるすべてのアプリのインストールを許可する」を有効にします。

Sidelading Activation Key のインストール

コマンドロンプトで管理者権限で Slmgr を実行します。

image

/ipk オプションで Sideloading Activation Key の 25桁のプロダクトキーを入力してください。

サイドローディングアプリケーションの展開

手動インストールを行う場合 add-appxpackage PoweShell コマンドレットを使います。

Windows インストールイメージに付属させてアプリケーションを展開するには DISM コマンドの /Add-ProvisionedAppxPackage オプションを使うか、Add-AppxProvisionedPackage PoweShell コマンドレットを使います。

System Centerその他、Windows でアプリケーション展開を行う為の各種システムがサイドローディングに対応しているようです。(そちらは私は調べていません。)

サイドローディングされるアプリケーションの開発

サイドローディングされるアプリケーションは適切な署名がされている必要があります。(以下は自己署名証明書を利用する例です、企業レベルでCAを持っている場合、そのCAで証明書を発行する事が望ましいです)

コードサインニング証明書を作成します /eku オプションの 1.3.6.1.5.5.7.3.3 がコードサインニング証明書を生成する事の指定になっており 1.3.6.1.4.1.311.10.3.13 で証明書が無効になってもコードサインニング署名を有効にするためのオプションです。(これを指定していないと証明書が期限切れで無効になった時にアプリケーションを再署名する必要があります)

C:\Users\kazuk>MakeCert /n “CN=Kazuk” /r /h 0 /eku “1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13” /e “08/01/2013” /sv MyKey.pvk MyKey.cer
Succeeded

数回パスワードをどう設定するか聞いてきますのでパスワードを設定すると Succeeded 表示されファイルが作成されます。

Pvk2Pfx ユーティリティで pfx ファイルを作成します。

C:\Users\kazuk>Pvk2Pfx /pvk MyKey.pvk /pi 検閲削除 /spc MyKey.cer /pfx MyKey.pfx

/pi のパラメータは 証明書のパスワードです。 /po オプションで pfx を利用する際のパスワードを設定できます。

作成された MyKey.cer は展開されるマシンの証明書ストアに配置する必要があり、pfx はアプリケーションの開発に必要になりますので、pvk 含めてちゃんと保存、管理してください。

開発者はプロジェクトに pfx を配置するか証明書ストアに pfxをインポートします。

imageimage

ファイルを選択すると証明書のパスワードを要求されるので、これを入力すると署名が設定されます。

完全な証明書の表示を行うと、MakeCert 時に設定した日付までになっていますので、正しく署名がされる事が確認できます。

cer ファイルを展開先マシンの「信頼される発行元」の証明書ストアに登録する事で、このpfxで署名されたアプリケーションは展開先で信頼されます。(今回は自己署名証明書のため、ルート証明機関にも登録する必要があります)

サイドローディングされるアプリケーションで、Windows Runtime に存在しないAPIを利用する

ポータブルクラスライブラリでインターフェースを宣言し、それを実装する通常のクラスライブラリを作成してMEFでロードすればいけます。これを使うとLOBアプリケーションで SQL Server 等のRDBMSを利用する事も普通にできます。

 

参考情報

1. sideloading product activation key + Windows 8 : MSDN Forum

その他 MSDN や TechNet 見ろ

まとめ

個人事業主としてサイドローディングされるLOBアプリケーションの受注開発、ないしは開発プロジェクトに対しての技術支援等行っておりますので、ご相談ください。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。