デプロイしたxapファイルを一括でアンインストールする方法
「Windows Phone Advent Calendar」の第10日目です。
作成しているアプリケーションをテストするために実機にアプリケーションを転送したり、ネットで公開されているxapファイルをApplication Deploymentを使って実機にデプロイすることで、実機にアプリケーションが溜まっていきます。
最大で10個までしか登録できないのでそれ以上デプロイしたい場合は、デプロイしたアプリケーションをアンインストールする必要があります。
しかしたくさんのアプリをインストールしてある環境である程度時間が経つとマーケットからインストールしたアプリと手動で転送してインストールしたアプリの区別が付かなくなり、どれをアンインストールしてよいか分からなくなってしまいます。
アプリケーションを長押ししたときに「評価とレビュー」が表示されればマーケットからインストールしたものと気が付きますが、わざわざ一つずつそれを試すのも面倒です。
そこで手動でインストールしたアプリを一括でアンインストールする方法です。
プログラムで操作することになりますが、プログラム自体は非常に簡単です。
Microsoft.Smartdevice.Connectivity.dllを使用します。このライブラリは以前の記事の「エミュレータにPeopleハブを表示する方法」でも利用しました。
私の環境(Windows 7 Professional 64ビット)ではこちらに存在します。
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SmartDevice.Connectivity\ v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.Smartdevice.Connectivity.dll
適当にC#のプロジェクトを作成し上記のMicrosoft.Smartdevice.Connectivity.dllを参照に追加し下記のコードを貼り付けて実行するだけです。
// Datastoreオブジェクトの生成 var dsMgr = new DatastoreManager(1033); // プラットフォーム取得 var wp7 = dsMgr.GetPlatforms().Single(p => p.Name == "Windows Phone 7"); // デバイスの取得 var wp7Device = wp7.GetDevices().Single(p => p.Name == "Windows Phone Device"); // デバイスに接続 wp7Device.Connect(); // 手動でインストールしたアプリの一覧を取得 var apps = wp7Device.GetInstalledApplications(); // アプリを一つずつアンインストール foreach (var app in apps) { app.Uninstall(); }
Zuneを起動して実機と繋がっている状態でこのコードを実行すると、手動でインストールしたアプリが一つずつアンインストールされていきます。
ソースコードと実行ファイルを含むプロジェクトのダウンロードはこちらから。Application Undeployment.zip