Windowsサンドボックスの構成ファイルが簡単に作れるUWPアプリ「WSBマネージャー」をリリースしました!

こんにちはー!ニアです。

先日、3年ぶりにUWPアプリを作り、リリースしました!

1. WSBマネージャーの概要

WSBマネージャーは、Windowsサンドボックスの構成ファイル(.wsb)を簡単に作成・編集をすることができます。既存の構成ファイルをインポートしたり、wsbファイルにエクスポートして、他の人に渡せるようにすることができます。

Nia02.png
Windowsの設定でダークモードにすると、このアプリもダークモードになるよ!

1.1. アプリの概要

アプリ名WSBマネージャー(WSB Manager)
バージョン1.0.0
作成者智中ニア(Nia Tomonaka)
リリース日2019/09/13
最終更新日
Microsoftストアhttps://www.microsoft.com/store/apps/9P09B9DSPB95
対応プラットフォームWindows 10(バージョン1803以上)
使用するアプリ機能(Capabilities) フォルダー・ファイルへのアクセス
対応言語日本語(ja、ja-JP)、英語(en、en-US)
ライセンスApache-2.0 License
GitHubhttps://github.com/Nia-TN1012/WSBManager
プログラミング言語、フレームワークC# 7.3 / XAML / .NET Core / Windows 10 SDK
ライブラリWindows Community Toolkit
開発環境Visual Studio 2019
  • このアプリはx86またはx64アーキテクチャのWindows 10デスクトップに対応しています。ARMアーキテクチャやWindows 10 Mobileなどには対応していません。
  • このアプリからWindowsサンドボックスを起動させる場合、Windows 10 ProまたはEnterprise バージョン1903以降かつ、ハードウェアがサポートされている必要があります。また、あらかじめ「Windowsの機能の有効化または無効化」よりWindowsサンドボックスを有効にしておきます。

アプリは、Microsoftストアよりダウンロードすることができます(※Windows 10をお使いの場合、ストアアプリが開きます)。

Down

使い方は、アプリ内またはGitHubのREADME.ja-JP.mdを参照してください。

2. WSBマネージャーの開発後記

2.1. 開発したきっかけ

Windows 10バージョン1903に追加されたWindowsサンドボックスには、wsbファイル(XML形式)を使って仮想GPUやネットワーク、マッピングフォルダー、ログオンコマンドをカスタマイズできるのですが・・・、

これを編集できる手段がテキストエディタのみだったので、GUIアプリがあれば簡単に作成・編集ができ、XMLの文法エラーの心配しなくてもよくなると思い、開発しました。

2.2. 開発期間

開発期間は1カ月です。基本的に昼休みや業務を終えて帰宅してから開発を行っていました。

2.3. 本アプリの工夫点

2.3.1. サンドボックスの構成アイテムの管理機能

Hyper-VやVirtualBoxの マネージャー のように、サンドボックスの構成アイテムをリストで管理できる機能を実装しました。

項目にある「▷」ボタンを押すと、Windowsサンドボックスを起動するのですが、仕組みとしては、アプリの一時フォルダー内にwsbファイルを作成し、そのwsbファイルを開いて既定のアプリを開く機能を使って起動させることで実現しています。

2.3.2. Windows 10ダークモードに対応

Windows 10バージョン1903で実装されたダークモードに対応するため、アプリの背景色や文字色は極力「ThemeResource」のリソースを設定しました。

XAML テーマ リソース – Windows UWP applications

「すぱこみっくユニバース」や「アイコンフォントこれくしょん」に適用するかは未定です。
仮に実装するとなれば、設定画面でテーマを選択できるようにしておきたいですね。

2.4. 苦労した点

2.4.1. XMLSerializerやProcess.Startが使用できない

C#にはXMLSerializerを使って、クラスをXMLにシリアライズ・デシリアライズする機能があるので、サンドボックスの構成アイテム用モデルで使おうと思ったのですが、UWPではアセンブリの動的読み込みができないため、その仕組みを使用しているXMLSerializerが使用できませんでした。
結局、XMLの読み書きにはLinq to XMLを使うことにしました。

また、UWPではSystem.Diagnostics.Process.Startメソッドが使用できません。基本的にUWPアプリはURIを使って別のアプリを起動するのですが、WindowsサンドボックスにURIはないので、その方法は使用できないのです。

UWPを諦めてWPFとして実装し直そうと思ったのですが、

ファイルに応じた既定のアプリの起動 – Windows UWP applications

このドキュメントを見て、一時フォルダーにwsbファイルに保存し、Windows.System.Launcher.LaunchFileAsyncメソッドでそのファイルを開けば、wsbファイルの規定アプリであるWindowsサンドボックスを起動させることができると思いつきました。

2.4.2. 初回の審査がまさかのリジェクト

アプリが完成し、9/12の深夜にMicrosoftデベロッパーセンターに申請を済ませました。

9/12の午前中にMicrosoftデベロッパーセンター から審査結果のメールが来たのですが、まさかのリジェクト判定(iOSアプリでいうメタデータリジェクト)。個人開発のアプリでは初のリジェクト判定でちょっと焦りました。

外部アプリ(Windowsサンドボックス)を利用するのがまずかったのかなと思ったら、リジェクトの原因はプライバシーポリシーが必要とのことでした。

WSBマネージャーは、インターネット接続を使用していないのですが、wsbファイルのインポート・エクスポートやマッピングフォルダーのホストフォルダーの参照をする時に、デバイスのファイルやフォルダーにアクセスするので、そのためのプライバシーポリシーが必要なのでした。
(但し、アイコンフォントこれくしょん のように、アプリのローカルフォルダーや一時フォルダー内しかアクセスしない場合は、プライバシーポリシーは不要みたいです)

ということで、GitHubのリポジトリにプライバシーポリシーのファイルを設置し、そのURLをストアのプロパティに設定して再申請することで無事通過しました。

3. おわりに

実は、Windows 10バージョン1903にアップデートしてからずっと作りたかった、このWSBマネージャーですが、無事に開発&リリースができました。

やりたいことの内の1つが完了! だが、私にはやりたいことがまだまだありまっせw

あとはポートフォリオを作って、自分のスキルセットなどを整理しておきたいところです。新卒で入社し早2年半、そろそろ自分のキャリアを振り返ったり、見つめ直したりしようっと。

この記事をシェアする
Chronoir.netのRSSフィードを購読する

ニア(Nia)

サーバー・フロント・DB・インフラ(クラウド)エンジニア(目指すはフルスタック)。主にC#/PHPを使っています。最近はDockerやWebアプリ、モバイルアプリ開発(Xamarin)を探求中。好物は紅茶とコーヒー、シラス丼、趣味は写真撮影と音ゲーです

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください