一年多之前開始給公司封裝Win10系統,便於統一給公司電腦初始化攜帶各類軟件的系統,致力於裝完既能夠開發的狀態。那時候最新的版本是Win10 1703版本,天然就以他爲母盤,而後結合Vmware、Easy Sysprep、萬能驅動 v7來進行封裝工做,封裝教程能夠自行去IT天空搜索。 一開始很順利的安裝好 Win0 1703和各類開發軟件,而且順利的使用Easy Sysprep封裝了零雲專用Win10.wim,大概有20多GB。最後也順利的給公司的新電腦統一安裝了系統。php
沒過多久微軟更新了Win10秋季創意版,微軟如今的套路是每一年4月和10月各作一個大版本更新,分別叫作好比170三、1709。因而開始給Vmware裏面的系統進行升級,愉快的升級好了,照例打開Easy Sysprep,沒想到報錯???難道微軟不支持升級後的系統封裝,按照微軟以前的作法,若是從Win XP升級到Win 7這樣大版本是不支持封裝的,試了幾回仍是不行,因而百度谷歌,終於找到一個看錯誤緣由的方法,打開C:\Windows\System32\Sysprep\Panther\setuperr.log查看便可,看到錯誤大體是說什麼Systeprep fails sinceXXXXXX was not installed as all users......找到緣由了好像是Win10說實話沒啥用的APPX致使的,因而再谷歌找到一堆人遇到一樣的問題,參考各類回帖嘗試了幾回沒有效果,期間升級無數次Win10又恢復(利用VMware的快照功能)最後暫時放棄了。 參考過的連接各類腳本不限於:git
https://github.com/10se1ucgo/DisableWinTracking/issues/48數據庫
甚至於無IT天空發帖求出https://www.itsk.com/forum.php?mod=viewthread&tid=387479&page=1#pid10926540 然而並無用。擱置了一段時間。windows
今天眼看Win10 升級到1803了,心想說不定這回微軟修復了這個問題呢,因而又將Vmware裏的1703直接升級到1803。說實話升級的緣由是1803多了一個微軟學習iOS的UI特性,導航欄支持高斯模糊。升級完照例在此用Easy Sysprep封裝,仍是報半年前一樣的錯誤???難道是Easy Sysprep版本太老了,去官網看看問問,好像並無人有問題。看來仍是Win10的問題,看了錯誤日誌仍是去年一樣的錯誤,再一次無數次嘗試谷歌百度,各類帖子的回覆逐漸變多了,通過幾個月的總結,帖子內容大概是這樣的:app
一、首先好多人遇到一樣的問題都在抱怨微軟模塊化
二、微軟的官方論壇也有官方員工在回覆解決辦法相似Get-AppxPackage,而且堅持認爲有用,通過廣大網友和我反覆驗證確實沒有用工具
三、有人貼出來微軟官方文檔說Wind10升級後是支持封裝的,不過要求最低版本是1607。看到這裏我感受但願很大了,大佬都說能夠了那必定能夠。組件化
不少人在對微軟的不負責任吐糟開始嘗試本身解決,吐糟還包含相似M$ fix this Shit之類。一開始我以爲這些網友太過激進,萬一不是微軟問題是大家本身的問題呢。後來事實證實Windows寫的真的是很Shit,不知道是否是臨時工參與的編程工做。通過廣大網友的探索,終於找到緣由所在:若是你刪除了一個win10的帳戶,win10並不會刪掉與之相關的APPX安裝記錄,原本吧不刪就不刪吧,竟然連卸載命令手動都沒法刪除,最後你們不得不嘗試手動解決,有人發現這些信息(哪一個用戶安裝了哪一個APPX)保存在%ProgramData%\Microsoft\Windows\AppRepository\StateRepository-Machine.srd裏面,而這個文件是一個Sqlite數據庫文件,因而你們開始手動操做,直接改數據庫還不行嗎!!!貌似有人成功了,我也開始嘗試去作,用Sql軟件打開進行編輯,又嘗試了無數次宣告失敗,這個數據庫的表設計複雜難懂,關鍵刪除記錄竟然還報Tigger錯誤???爲了刪記錄,甚至把Tigger刪掉,刪完記錄後再執行回來,仍是不行。最後發現有位網友激進的答案,說你們別改了,直接刪掉這個文件,而後執行WSREST.exe重置。趕忙又試了一下,發現成功是成功了,真的能夠封裝了,並且封裝的系統是好的,可是母盤系統的開始菜單卻打不開了,連設置都打不開???難道不能刪,又嘗試回去改數據解決,失敗了又回來嘗試刪文件並重置解決,最後在絕望之中竟然黎明的曙光到來了。直接說下步驟:
一、下載PsExec工具(這是一個提權工具,要否則沒法訪問StateRepository-Machine.srd數據庫)
二、管理員權限打開CMD執行psexec -i -s cmd,會讓CMD又SYSTEM高級權限
三、在Winddows裏關閉StateRepository服務
四、在CMD裏刪掉StateRepository-Machine.srd
五、執行C:\Windows\System32\WSREST.exe
六、重啓
七、到這裏其實封裝的問題已經解決了,可是留下一個後遺症,開始菜單失效
八、重啓後再次執行 C:\Windows\System32\WSREST.exe 會打開Windows Stoe應用商店,隨便找個應用安裝
九、期間又加上Get-AppxPackage刪除和重裝命令,同時又使用騰訊電腦管家的仿Win7風格開始菜單點來點去
十、沒過一下子開始菜單竟然回來了!!!!
回想這個問題的解決過程,心裏真的是很崩潰的,多少次嘗試,多少次絕望,還好今天解決了。寫這篇帖子其實有如下幾個目的:
一、給遇到一樣問題的人一個參考
二、Windows寫的真的不好,多是歷史包袱太大了,系統又巨大,團隊協做的難度很是大吧能夠理解
三、但願你們寫程序時必定要嚴謹,各類業務操做該串聯的就串聯,不要給後來人留坑,不要像Windows那樣不負責任,不過這也是Windows一向的做風,沒有哪一個軟件是能夠卸載乾淨的,你要是安裝了一個Vistual Studio這種宇宙IDE,這輩子都別想乾淨的卸載了,只能重裝系統。。。。不過據說Windows搞了一個小組專門研究Windows模塊化,組件化,但願他們能早日成功吧,畢竟咱們零雲早已經實現高度模塊化、組件化了。
四、但願你們在遇到問題是永不放棄,辦法總比問題多。(這個問題多是我進入互聯網行業遇到最坑解決時間最長的問題了)
零雲https://www.lingyun.net 是一套國內領先的互聯網積木式開發雲平臺,追求簡單、高效、卓越。可輕鬆實現支持多終端的互聯網產品快速搭建、部署、上線。系統功能採用模塊化、組件化、插件化等開放化低耦合設計,應用商城擁有豐富的功能模塊、插件、主題,便於用戶靈活擴展和二次開發。