首先簡單介紹Windows 10 S Mode,Windows在該模式下,只能跑MS Store里的軟件,不能通過其他方式安裝。好處是安全有保障,杜絕一切國產流氓軟件。就像iOS一樣,APP進商店都需審核,同時APP在沙盒環境下,以普通用戶權限運行,不能偷偷摸摸地干壞事,搶占資源的情況也不會發生,自然體驗流暢,系統性能提升。一切都是那么的美好,但Windows S Mode就是沒有人用……
這個悲劇真是不好說,也許是用戶習慣,也許是違背人性,同時侵犯了廠商(要審核,要分成)和用戶的利益(很多軟件、游戲裝不了,D版軟件更不用想)。再考慮到MS Store本身就不太豐富的APP,哎媽我也不想去用什么S Mode……
但是你要想嘛,某軟當初是有手機的,還有XBOX也能運行UWP APP的(越說越生氣)。現在慘是慘了點,但保不准10月2日又蹦出來什么奇葩設備,ARM的只能UWP,或者低功耗設備只能MS Store,於是再續一秒……還有傳輸中的折疊設備,Windows Core OS等等,所以確保一個APP能在Windows 10 S Mode下運行,也許還是有那么一丟丟的意義(強行洗地)……
因為這個系列的主題是遷移桌面程序到MS Store,而純UWP本就可以在S Mode運行,所以本篇我們要討論的,是通過APPX With Desktop Extension的方式,將已有的桌面程序在S Mode運行。
接下來我們來說如何進行S Mode下的測試,因為並不是只要通過desktop bridge的方式打包成APPX,就一定可以成功在S Mode運行。
除了專門弄一台Windows 10 S Mode的機器來測試以外,根據官方文檔,我們還可以在Window 10 Pro通過配置來模擬S Mode。
https://docs.microsoft.com/zh-cn/windows/msix/desktop/desktop-to-uwp-test-windows-s
文檔中描述了審核模式(Audit mode policy),生產模式(Production mode policy)和自簽名生產模式(Product mode policy with self-signed apps)。后兩者是真的把你的Windows 10 Pro設置成S Mode,所以我們先看審核模式,通過文檔上的鏈接下載審核模式的策略文件SiPolicy_Audit.p7b,重命名為SIPolicy,然后貼到C:\Windows\System32\CodeIntegrity\, 重啟系統。
完成后,就可以測試將要在S Mode運行的APP,然后去Event Viewer里查看是否有錯誤信息。
可以在下圖中看到,系統認為Firefox.exe不符合S Mode的要求,但因為是審核模式,所以allowed to load。
接下來我准備悶聲作大死,把SiPolicy_Enforced.p7b拷貝過去應用生產模式。在更新文件名並重啟后,我試圖點擊《遷移桌面程序到MS Store(9)——APPX With Desktop Extension》中包含的DotNetConsoleApp.exe,慘遭系統拒絕執行。
如果我們從商店下載包含DotNetConsoleApp.exe的AppxWithDesktopExSample1的話,則可以順利運行。
下圖可以看到Console的窗口標題指出了DotNetConsoleApp.exe的絕對路徑。
本篇我們簡單介紹了Windows 10 S Mode,並討論了如何在S Mode下測試APP運行狀態。后續我們會嘗試如何在S Mode要求管理員權限。
GitHub地址:
https://github.com/manupstairs/AppxWithDesktopExtension
MS Store:
https://www.microsoft.com/store/productid/9N22D8RLKZN2