ここに書いてあることを実行する場合は自己責任でお願いします!! 特にライセンス関係の正確なところは各自でちゃんと調べて下さい。
個人レベルでWindowsストアアプリのサイドローディング(Windowsストアを介さないインストール)方法をまとめておきます。ここでは
・自分で作ったアプリを永続的に使う
・個人レベルでWindowsストアアプリを野良配布する
という用途を想定してますので、会社組織とか個人でもドメイン環境などで大規模にやるならもっと効率的な方法を用いましょう。
個人レベルでサイドローディングを行うための要件は
・Windows 8.1 updateにアップグレードしてある(無印8やupdate前の8.1は必要なライセンス要件が異なります)
・Windows 8.1 ProかEnterpriseである(Windows RTでもいいらしいけど未確認)。Proじゃない8や8.1はダメなので捨てましょう。
・Proの場合はSA(Software Assurance)が割り当てられている(もしかしたら今は不要かも)
・Windows Sideloading Rightsのプロダクトキーを所有している(1ライセンスで何台でも有効に出来る)
です。ただしライセンス要件がころころ変わっている上正式な文書が発見できないので不正確な所があるかもしれません。一応Microsoftの技術Blogと電話で確認した内容を元にしています。
参考:
DISM を使ったアプリのサイドローディング
WINDOWS ストア アプリのサイドローディングについて
Windows 8.1 Update: Sideloading Enhancements(英語)
(2番目のサイトにはEnterpriseならサイドローディングプロダクトキー不要みたいなことが書いてありますが、無いとダメみたいです)
1.ライセンスを用意する
Windows Sideloading RightsとSAはボリュームライセンスでしか買えないので、Open Businessボリュームライセンスで購入します(多分Open Business以外は個人ではまず無理)。個人でも申し込めるリセラーもあるので適当に探しましょう。
最低3本からになるので、あと1本は適当に考えて下さい。
おおざっぱな価格は
ここで確認できます(Sideloading Rightsは詳細見積じゃないと選べません。上のブログでは100ドルと書いてあって、このサイトでも国と言語をUSにすると100ドルなんですが、何故か日本にすると2万円弱に…)。
Sideloading Rightsは1本あれば何台にでも適用可能なはずです(ただし譲渡や再販は出来ないので自分のPCにのみ)。
SAは1ライセンスにつき1本ずつ必要です。ちなみにSAとはマイクロソフトのサポート契約の一種で、有効期間(Open Businessなら2年)の間無償で最新版にアップグレードできたり、Enterpriseエディションが使用可能になったり、Hyper-Vで仮想マシンが4台まで追加購入無しで使えるようになったりします。
SAはボリュームライセンスと一緒に購入するのが普通ですが、Windows 8.1 Proの
DSP版やパッケージ版やOSプレインストールされたPCの購入後90日以内であればSAだけボリュームライセンスで買って割り当てることが出来ます。この方法を使うともとのライセンス自体がボリュームライセンス扱いになるので、
Windows PCやDSP版Windowsを買ったら必ずつけましょう。
#ちなみにボリュームライセンスでライセンスとSAを買うより、ライセンスはDSP版を買ってSAだけボリュームライセンスで買う方が安いし窓辺ゆうの壁紙も貰えるし新規インストール可能になるのでお得です(ボリュームライセンスで買えるWindowsのライセンスはアップグレード版のみ)。
既に購入後90日すぎてしまっていて再インストールも出来ない場合(ノートPCなど)はSAの移動という手段が使えます。とりあえず別途DSP版を買って90日以内にSAを付けて、そのSAを目的のPCに移します(とはいっても手続きとかは一切無いので自分で「移した」と宣言するだけ)。マイクロソフトに電話して聞いたところによるとそれでいいけどもともとSAがついていたDSP版のライセンス自体がSA無しのライセンスとしても使用不可になるそうです(ので、OSのライセンスは結局1本分余計に買うことになります)。
#SAは有効期限がありますが、Sideloading Rightsを適用するときに有効期限内であればSAはその後切れてもサイドローディング権は永続の筈です。
2.インストールするWindowsストアアプリを用意する
Visual Sutdio2013を買って自分で作りましょう。Pro(MSDN無し)でもいいし、多分無償のExpressでも出来ると思います。
重要なのは署名に使う証明書を自作しておくことです。証明書の作成は次のようにします。
- Visual Studio ツール → 開発者コマンド プロンプト for VS2013 を起動
- 証明書のファイルを書き出すディレクトリに移動(cd 目的のディレクトリ)
makecert -n "CN=自分の識別名" -pe -r -h 0 -eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /sv 秘密鍵のファイル名.pvk 公開鍵のファイル名.cer
を実行します。自分の識別名は公開しているメールアドレスとかでいいと思います(CN=yu-oishi@wfbbs.org とか)。秘密鍵のパスフレーズを聞かれるので適当に決めて何回か入力します。-e 12/31/2014 などとつけると有効期限を指定できますが、未指定だと2039年12月31日になるのでそれでいいでしょう。
pvk2pfx /pvk 秘密鍵.pvk /pi パスフレーズ /spc 公開鍵.cer /pfx Windowsストアアプリ用の秘密鍵.pfx
を実行し、pvkファイルからWindowsストアアプリ用の秘密鍵であるpfxファイルを作成します。pvkとpfxは両方秘密鍵なので厳重に管理しましょう。
- 公開鍵.cerをダブルクリックして証明書マネージャーを起動し、「信頼されたルート証明機関」に追加する。スタート画面などからcertmgr.mscを起動し、「信頼されたルート証明機関」を右クリックして全てのタスク→インポートで先ほどの公開鍵を選んでもよい。
pfxファイルを作成したら、VisualStudioで目的のプロジェクトのPackage.appxmanifestファイルを開き、「パッケージ化」タブで「証明書の選択」ボタンを押し、証明書の構成→ファイルから選択 でpfxファイルを指定します。指定したらとりあえずリビルドしてエラー無く実行ファイルが作成できるか確認しましょう。
出来たらプロジェクト→ストア→アプリパッケージの作成でパッケージを作成します。Windowsストアにアップロードするパッケージを作成しますか?の問にはいいえでかまいませんし、テストに合格している必要もありません。
証明書の公開鍵(cerファイル)とアプリパッケージ一式を配布します。
3.サイドローディングプロダクトキーのインストール
アプリをインストールするPCで管理者権限のコマンドプロンプトを開き、
slmgr /ipk サイドローディングプロダクトキー
を実行してサイドローディングプロダクトキーをインストールします。成功すると少し経った後「プロダクトキー **** を正常にインストールしました。」というダイアログが出てきます。ちなみにslmgr /dlv で現在インストールされているプロダクトキーが確認でき、正常にインストールされているとWindows自体のプロダクトキーとサイドローディングプロダクトキー(Windows APPXLOB-Client Add-on for ... というやつ)の2つが表示されます。
続いて
slmgr /ato ec67814b-30e6-4a50-bf7b-d55daf729d1e
と入力してライセンスキーをアクティベートします(インターネット接続環境が必要)。この文字列はサイドローディングプロダクトキーのライセンス認証のGUIDなのでそのまま入力します。成功すると少し経った後「Windows APPXLOB-Client add-on for ... のライセンス認証を実行中... 製品は正常にライセンス認証されました。」というダイアログが出てきます。
4.証明書のインストール
サイドローディングするアプリは信頼された証明書で署名されていなければならないので、証明書の公開鍵をダブルクリックして「信頼されたルート証明機関」にインストールします。certmgr.mscを起動し、「信頼されたルート証明機関」を右クリックして全てのタスク→インポートで先ほどの公開鍵を選んでもOKです。
なお、
証明書のルート証明機関へのインストールはその証明書の作成者を全面的に信頼することになるため、自己責任の上十分な注意のもと行って下さい。特に他人が作ったアプリをインストールするときは気をつけましょう。なお、上の方法で自分が作った証明書では無い場合は、インストールされた証明書を右クリック→プロパティで証明書の目的をコード署名とライフタイム署名のみにしておけばサイドローディング以外の用途に悪用される危険性が減ります。
5.アプリのサイドローディング
対象のPCで管理者権限のpowershellを開き、
add-appxpackage パッケージファイルのパス名
を実行します。パッケージファイルは*.appxファイルか*.appxbundleファイルのいずれかを指定します。もし他のパッケージにも依存しているなら -DependencyPath 依存パッケージ もコマンドラインに追加します。
うまくいっていればスタート画面に追加されていて起動できるようになっている筈なので、確認しましょう。
なんか8.1 updateになってからサイドローディングされたアプリなら
同一PC内のネットワーク通信やCOM呼び出しが出来るみたいです。これはつまりデスクトップアプリと連携出来るということで非常に強力なので、是非使っていきましょう。WindowsストアアプリはデスクトップアプリのUIの一部として利用できるとかなり用途の幅が広がるはずです。
Windowsストアの審査はぶっちゃけ邪魔なので、野良配布のストアアプリがどんどん増えるといいなぁ…