Windows.Storage.Compression 命名空間提供四種演算法:Xpress、XpressHuff、Mszip、Lzms。核心類別 Compressor、Decompressor 像資料流一樣操作。
private async void CompressionDemo(CompressAlgorithm algorithm)
{
// 1. 選取檔案
var picker = new FileOpenPicker(); picker.FileTypeFilter.Add("*");
var originalFile = await picker.PickSingleFileAsync(); if (originalFile == null) return;
// 2. 建立壓縮檔 (需在 Package.appxmanifest 宣告 .compressed 檔案關聯)
var compressedFile = await KnownFolders.DocumentsLibrary.CreateFileAsync(originalFile.Name + ".compressed", CreationCollisionOption.GenerateUniqueName);
// 3. 壓縮
using (var input = await originalFile.OpenReadAsync())
using (var output = await compressedFile.OpenAsync(FileAccessMode.ReadWrite))
using (var compressor = new Compressor(output.GetOutputStreamAt(0), algorithm, 0))
{
var bytesCompressed = await RandomAccessStream.CopyAsync(input, compressor);
await compressor.FinishAsync();
// 顯示壓縮前後大小
}
// 4. 解壓縮
var decompressedFile = await KnownFolders.DocumentsLibrary.CreateFileAsync(originalFile.Name + ".decompressed", CreationCollisionOption.GenerateUniqueName);
using (var input = await compressedFile.OpenSequentialReadAsync())
using (var output = await decompressedFile.OpenAsync(FileAccessMode.ReadWrite))
using (var decompressor = new Decompressor(input))
{
var bytesDecompressed = await RandomAccessStream.CopyAsync(decompressor, output);
// 顯示解壓縮大小
}
}
// 開啟指定 App 的商店頁面
await Launcher.LaunchUriAsync(new Uri("ms-windows-store:PDP?PFN=" + Package.Current.Id.FamilyName));
// 開啟評論頁
await Launcher.LaunchUriAsync(new Uri("ms-windows-store:REVIEW?PFN=" + Package.Current.Id.FamilyName));
// 關鍵字搜尋
await Launcher.LaunchUriAsync(new Uri("ms-windows-store:Search?query=關鍵字"));
// 開啟更新頁
await Launcher.LaunchUriAsync(new Uri("ms-windows-store:Updates"));
在網頁中加入 Meta 標籤,IE/Edge 會顯示「切換到 App」或「取得此網站的 App」按鈕:
<meta name="msApplication-ID" content="套件名稱" /> <meta name="msApplication-PackageFamilyName" content="套件系列名稱" /> <meta name="msApplication-Arguments" content="啟動參數" />
App 端於 OnLaunched 透過 args.Arguments 取得參數。
RunAsync(CoreDispatcherPriority.Normal, () => { /* UI 更新 */ })。| 層級 | 事件/方法 | 用途 |
|---|---|---|
| 應用程式 | OnLaunched / OnSuspending / OnResuming | 啟動、暫停儲存狀態、恢復 |
| 頁面 | OnNavigatedTo / OnNavigatedFrom / LoadState / SaveState | 導航參數、狀態保存/還原 |
| 視窗 | VisibilityChanged / SizeChanged | 輔助顯示、全螢幕切換 |
Suspending) 必須在 5 秒內完成狀態序列化,否則系統強制終止。SuspensionManager 輔助類自動處理頁面狀態儲存至 ApplicationData.Current.LocalFolder。ms-windows-store:) 僅在裝置安裝 Windows 8+ 時有效。掌握壓縮資料流、商店深層連結、Web-to-App 導流、Core API 多執行緒調度與 PLM 狀態管理,是打造專業級 Windows Store 應用的關鍵能力組合。