2012-11-23 67 views
3

我目前正在開發一個WinRT應用程序,我從Windows.Storage.ApplicationData.Current.LocalFolder加載本地HTML文件。我想知道加載嵌入在HTML文件中的圖片,音頻,視頻,CSS,JavaScript等資源的最佳方式是什麼。winrt:在webview中加載本地html及其資源

目前,我正在將這些文件寫入Windows.ApplicationModel.Package.Current.InstalledLocation,但是一旦從應用商店中部署應用或通過Windows PowerShell安裝AppPackage,就不會再訪問這些文件,除非您更改「Program Files/WindowsApps「文件夾複製到當前用戶或」Everyone「。

在此先感謝。

回答

9

我不確定你到底在問什麼。唯一應該是Windows.ApplicationModel.Package.Current.InstalledLocation的文件是與您的AppPackage一起安裝的文件,也就是您應用程序發行版的一部分。你的應用程序不應該(甚至不允許)在那裏存儲它的任何文件。

在運行時生成的任何文件都應存儲在Windows.Storage.ApplicationData.Current.LocalFolderWindows.Storage.ApplicationData.Current.RemoteFolderWindows.Storage.ApplicationData.Current.TempFolder之一中,具體取決於您希望如何保留它們。這個規則的唯一例外情況是當你希望用戶甚至可以從你的應用程序之外訪問這些文件時 - 那麼你應該把它們放在一個庫中(並且需要訪問它)或者使用文件選擇器向用戶請求一個位置。

編輯:

載入本地HTML資源是非常有限的,除非它們與該應用程序一起分發,即,它們被存儲在InstalledLocation和經由ms-appx-web協議訪問。如documentedWebView控制不支持ms-appdata協議,其被用於從LocalStorageRemoteStorageTempFolder檢索數據:

此外,web視圖不支持MS-應用程序數據:方案,雖然 它支持MS -appx-web:方案。這使您可以在項目中加載 內容文件。

這或多或少地帶走了C#項目中的所有選項。您可以使用替代的HTML查看器控件,但我知道only one,它還沒有完成。

在JavaScript中,情況只是稍好一些。 ms-appdata協議是supported only for data files

有時它是(通過Windows 運行時API)來指代您從 在網上下載到您的應用程序的本地的ApplicationData存儲資源非常有用。要引用此類內容,您必須使用方案 「ms-appdata:」,以及ApplicationData 本地存儲中的文件路徑。請注意,出於安全原因,您無法導航至您下載到此位置的HTML ,並且您無法運行任何 可執行代碼或潛在可執行代碼,例如腳本或CSS。它是針對諸如圖像或視頻之類的媒體而設計的。

這意味着你可以這樣做:

<img src="ms-appdata:///local/img/coal.jpg" /> 

但不是:

<iframe src="ms-appdata:///local/index.html" /> 

ms-appdata protocal語法well documented的情況下,你仍然會發現使用它。

+0

我想知道我可以加載本地HTML資源,即圖像,css,javasripts等其他選項。現在我正在將這些資源寫入「Windows.ApplicationModel.Package.Current.InstalledLocation」因爲這是在WinRT Webview控件上使用「ms-appx-web」協議的唯一方法。這些資源是在運行時生成的,因此如果我將它存儲在「Current.LocalFolder」,「Current.RemoteFolder」或「Current.TempFolder」中,則「ms-appx-web」協議將無法工作。 – Erick

+0

@Erick不幸的是沒有太多的選擇。我已經擴展了我的答案,涵蓋了可用的內容。 –

+0

感謝您的回答。現在已經很清楚了,這肯定會指向正確的方向。 – Erick

相關問題