かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Windows ストア アプリリソースやアプリデータ内のファイルを指定するのに使えるURL

追記:
ms-appdataについての記述が間違ってたので修正しました。

はじまりは酢酸先生の一言でした。


試行錯誤して私は、以下のコードをためしてみたり色々してたら…

// NG
webView.Navigate(new Uri("ms-appx:///HTMLPage1.html"));

// かったるい
var file = await StorageFile.GetFileFromApplicationUriAsync(
    new Uri("ms-appx:///HTMLPage1.html"));
using (var s = new StreamReader(await file.OpenStreamForReadAsync()))
{
    webView.NavigateToString(await s.ReadToEndAsync());
}

だるやなぎさんが14分でやってくれましたよ。

ちなみにドキュメント
ファイル リソースを読み込む方法 (JavaScript と HTML を使った Metro スタイル アプリ)

ということでまとめると

  • ms-appx:///hogehoge/fugafuga
    • アプリケーション内のリソースを指定する
  • ms-appx-web:///hogehoge/fugafuga
    • WebViewとかに読み込ませるのに使うURL
  • ms-appdata:///local/hogehoge/fugafuga
    • ApplicationData.Current.LocalFolder内のファイルを指定する
  • ms-appdata:///temp/hogehoge/fugafuga
    • ApplicationData.Current.TemporaryFolder内のファイルを指定する
  • ms-appdata:///roaming/hogehoge/fugafuga
    • ApplicationData.Current.RoamingFolder内のファイルを指定する

ややこしいですね。

とりあえず

最終的なコードはこんなにすっきり!!

webView.Navigate(new Uri("ms-appx-web:///HTMLPage1.html"));

蛇足

今回の件でだるやなぎさんが2mm伸びたみたいです。

追記内容1

間違えてました。