かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

間違えてました。