デプロイした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 直