1. 程式人生 > >遷移桌面程式到MS Store(10)——在Windows S Mode執行

遷移桌面程式到MS Store(10)——在Windows S Mode執行

首先簡單介紹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

&n